forked from KNEMC/KLALB
优化代码,性能暴涨
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
package org.kne.cloud.network.klalb;
|
||||
|
||||
import java.io.EOFException;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.channels.ReadableByteChannel;
|
||||
import java.nio.channels.WritableByteChannel;
|
||||
|
||||
import org.kne.cloud.network.ipv6.IPv6Packet;
|
||||
|
||||
public class IPv6OverKLALBPacket extends KLALBPacket {
|
||||
private static final int HEADER_LENGTH=9;
|
||||
@Override
|
||||
public boolean isSomeDisposed() {
|
||||
return super.isDisposed()||ipv6Packet.isSomeDisposed();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void lockAll() {
|
||||
super.lockAll();
|
||||
ipv6Packet.lockAll();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void unlockAll() {
|
||||
ipv6Packet.unlockAll();
|
||||
super.unlockAll();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public long getLength() {
|
||||
return HEADER_LENGTH+ipv6Packet.getLength();
|
||||
}
|
||||
|
||||
private IPv6Packet ipv6Packet;
|
||||
|
||||
public IPv6OverKLALBPacket(IPv6Packet ipv6Packet) {
|
||||
super(IPV6OVERKLALB,HEADER_LENGTH);
|
||||
klalbHeader.putLong((int) ipv6Packet.getLength());
|
||||
this.ipv6Packet=ipv6Packet;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public IPv6OverKLALBPacket() {
|
||||
super(IPV6OVERKLALB,HEADER_LENGTH);
|
||||
this.ipv6Packet=new IPv6Packet();
|
||||
}
|
||||
|
||||
public IPv6OverKLALBPacket(ByteBuffer bb) {
|
||||
super(bb,HEADER_LENGTH);
|
||||
this.ipv6Packet=new IPv6Packet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disposeAll() {
|
||||
super.disposeAll();
|
||||
ipv6Packet.disposeAll();
|
||||
}
|
||||
|
||||
public IPv6Packet getIPv6Packet() {
|
||||
return ipv6Packet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "IPv6 "+ipv6Packet.getSourceAddress().getHostAddress()+"->"+ipv6Packet.getDestinationAddress().getHostAddress()+" type:"+ipv6Packet.getPayload().getProtocolNumber()+"["+getSize()+"]";
|
||||
}
|
||||
|
||||
|
||||
public long getSize() {
|
||||
return ipv6Packet.getLength();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeToChannel(WritableByteChannel dto) throws IOException {
|
||||
klalbHeader.putLong(1, ipv6Packet.getLength());
|
||||
super.writeToChannel(dto);
|
||||
ipv6Packet.writeToChannel(dto);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void readFromChannel(ReadableByteChannel din,long length) throws IOException {
|
||||
super.readFromChannel(din,length);
|
||||
ipv6Packet.readFromChannel(din, klalbHeader.getLong(1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void doDisposeAfterSend() {
|
||||
super.doDisposeAfterSend();
|
||||
ipv6Packet.doDisposeAfterSend();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user