LengthFieldPrepender 的取值范围

2020-05-13  本文已影响0人  程序男保姆

 /**根据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;

上一篇 下一篇

猜你喜欢

热点阅读