LengthFieldPrepender 的取值范围
作者:
程序男保姆 | 来源:发表于
2020-05-13 19:56 被阅读0次
- ######## class LengthFieldPrepender extends MessageToMessageEncoder<ByteBuf>
/**根据lengthFieldLength字段 与 传入数据的byte.length 判断是否合适*/
switch (lengthFieldLength) {
case 1:
if (length >= 256) {
// 如果长度为1 并且传输的字符长度大于byte的最大容量256时,则报错
throw new IllegalArgumentException(
"length does not fit into a byte: " + length);
}
out.add(ctx.alloc().buffer(1).order(byteOrder).writeByte((byte) length));
break;
case 2:
if (length >= 65536) {
// 如果长度为2 并且传输的字符长度大于short的最大容量65536时,则报错
throw new IllegalArgumentException(
"length does not fit into a short integer: " + length);
}
out.add(ctx.alloc().buffer(2).order(byteOrder).writeShort((short) length));
break;
case 3:
if (length >= 16777216) {
// 如果长度为3 并且传输的字符长度大于16777216时,则报错
throw new IllegalArgumentException(
"length does not fit into a medium integer: " + length);
}
out.add(ctx.alloc().buffer(3).order(byteOrder).writeMedium(length));
break;
case 4:
out.add(ctx.alloc().buffer(4).order(byteOrder).writeInt(length));
break;
case 8:
out.add(ctx.alloc().buffer(8).order(byteOrder).writeLong(length));
break;
本文标题:LengthFieldPrepender 的取值范围
本文链接:https://www.haomeiwen.com/subject/wshonhtx.html
网友评论