示例#1
0
  @Test(timeout = 1000)
  public void a() {
    ByteBuf buf = Unpooled.buffer(4);
    buf.setInt(0, 1);
    System.out.format("%08x%n", buf.getInt(0));
    ByteBuf leBuf = buf.order(ByteOrder.LITTLE_ENDIAN);
    // 打印出 '01000000'
    System.out.format("%08x%n", leBuf.getInt(0));

    assert buf != leBuf;
    assert buf == buf.order(ByteOrder.BIG_ENDIAN);
  }
示例#2
0
 @Override
 public ByteBuf translateFrame(ByteBuf readBuffer)
     throws LimitExedeedException, InvalidDataException {
   while (readBuffer.isReadable()) {
     switch (status) {
       case STATUS_H:
         h = readBuffer.readByte();
         status = STATUS_L;
         break;
       case STATUS_L:
         l = readBuffer.readByte();
         final int blen =
             Protocol.order == ByteOrder.BIG_ENDIAN
                 ? (0x0000ff00 & (h << 8)) | (0x000000ff & l)
                 : (0x0000ff00 & (l << 8)) | (0x000000ff & h);
         if (context != null) {
           if (blen <= 0 || blen > maxFrameSize) {
             throw new LimitExedeedException("帧长度非法:" + h + "/" + l + ":" + blen);
           }
         }
         incompleteframe = PooledByteBufAllocator.DEFAULT.buffer(blen + 16 + 2);
         incompleteframe = incompleteframe.order(Protocol.order);
         incompleteframe.writeShort(blen);
         status = STATUS_C;
         break;
       case STATUS_C:
         int len = incompleteframe.writableBytes() - 16;
         len = len < readBuffer.readableBytes() ? len : readBuffer.readableBytes();
         // incompleteframe.writeBytes(readBuffer, len);
         if (readBuffer.hasMemoryAddress()) {
           PlatformDependent.copyMemory(
               readBuffer.memoryAddress() + readBuffer.readerIndex(),
               incompleteframe.memoryAddress() + incompleteframe.writerIndex(),
               len);
         } else if (readBuffer.hasArray()) {
           PlatformDependent.copyMemory(
               readBuffer.array(),
               readBuffer.arrayOffset() + readBuffer.readerIndex(),
               incompleteframe.memoryAddress() + incompleteframe.writerIndex(),
               len);
         }
         incompleteframe.writerIndex(incompleteframe.writerIndex() + len);
         readBuffer.readerIndex(readBuffer.readerIndex() + len);
         if ((incompleteframe.writableBytes() - 16) <= 0) {
           status = STATUS_H;
           return incompleteframe;
         }
         break;
     }
   }
   return null;
 }
示例#3
0
 private void writeShort(ByteBuf buf, int s) {
   buf.order(ByteOrder.LITTLE_ENDIAN).writeShort(s);
 }
示例#4
0
 @Override
 public ByteBuf order(ByteOrder endianness) {
   return buf.order(endianness);
 }
示例#5
0
 @Override
 public ByteOrder order() {
   return buf.order();
 }
 @Override
 public ByteBuf order(ByteOrder var1) {
   return a.order(var1);
 }