package com.fastbee.base.codec;
|
|
import static io.netty.util.internal.ObjectUtil.checkPositive;
|
import static io.netty.util.internal.ObjectUtil.checkPositiveOrZero;
|
|
/**
|
* 固定长度报文处理器
|
* 处理固定长度报文,tcp粘包处理
|
* @author bill
|
*/
|
public class LengthField {
|
|
public final byte[] prefix;
|
/*最大帧长度*/
|
public final int lengthFieldMaxFrameLength;
|
/*偏移量*/
|
public final int lengthFieldOffset;
|
/*字段长度*/
|
public final int lengthFieldLength;
|
/*结尾偏移量*/
|
public final int lengthFieldEndOffset;
|
/*报文调整 默认0,不调整*/
|
public final int lengthAdjustment;
|
/*,默认0*/
|
public final int initialBytesToStrip;
|
|
/**构造固定长度处理器*/
|
public LengthField(byte[] prefix, int maxFrameLength, int lengthFieldOffset, int lengthFieldLength) {
|
this(prefix, maxFrameLength, lengthFieldOffset, lengthFieldLength, 0, 0);
|
}
|
|
public LengthField(byte[] prefix, int maxFrameLength, int lengthFieldOffset, int lengthFieldLength, int lengthAdjustment, int initialBytesToStrip) {
|
checkPositive(maxFrameLength, "maxFrameLength_LengthField");
|
checkPositiveOrZero(lengthFieldOffset, "lengthFieldOffset");
|
checkPositiveOrZero(initialBytesToStrip, "initialBytesToStrip");
|
if (lengthFieldOffset > maxFrameLength - lengthFieldLength) {
|
throw new IllegalArgumentException("maxFrameLength_LengthField (" + maxFrameLength + ") must be equal to or greater than lengthFieldOffset (" + lengthFieldOffset + ") + lengthFieldLength (" + lengthFieldLength + ").");
|
} else {
|
this.prefix = prefix;
|
this.lengthFieldMaxFrameLength = maxFrameLength;
|
this.lengthFieldOffset = lengthFieldOffset;
|
this.lengthFieldLength = lengthFieldLength;
|
this.lengthAdjustment = lengthAdjustment;
|
this.lengthFieldEndOffset = lengthFieldOffset + lengthFieldLength;
|
this.initialBytesToStrip = initialBytesToStrip;
|
}
|
}
|
|
public byte[] getPrefix() {
|
return prefix;
|
}
|
|
public int getLengthFieldMaxFrameLength() {
|
return lengthFieldMaxFrameLength;
|
}
|
|
public int getLengthFieldOffset() {
|
return lengthFieldOffset;
|
}
|
|
public int getLengthFieldLength() {
|
return lengthFieldLength;
|
}
|
|
public int getLengthFieldEndOffset() {
|
return lengthFieldEndOffset;
|
}
|
|
public int getLengthAdjustment() {
|
return lengthAdjustment;
|
}
|
|
public int getInitialBytesToStrip() {
|
return initialBytesToStrip;
|
}
|
}
|