io.netty.buffer.ByteBuf.unwrap()方法的使用及代码示例

x33g5p2x  于2022-01-16 转载在 其他  
字(7.7k)|赞(0)|评价(0)|浏览(311)

本文整理了Java中io.netty.buffer.ByteBuf.unwrap()方法的一些代码示例,展示了ByteBuf.unwrap()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ByteBuf.unwrap()方法的具体详情如下:
包路径:io.netty.buffer.ByteBuf
类名称:ByteBuf
方法名:unwrap

ByteBuf.unwrap介绍

[英]Return the underlying buffer instance if this buffer is a wrapper of another buffer.
[中]如果此缓冲区是另一个缓冲区的包装,则返回基础缓冲区实例。

代码示例

代码示例来源:origin: netty/netty

@SuppressWarnings("deprecation")
private static ByteBuf unwrapSwapped(ByteBuf buf) {
  if (buf instanceof SwappedByteBuf) {
    do {
      buf = buf.unwrap();
    } while (buf instanceof SwappedByteBuf);
    return buf;
  }
  return buf;
}

代码示例来源:origin: netty/netty

UnreleasableByteBuf(ByteBuf buf) {
  super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);
}

代码示例来源:origin: redisson/redisson

@SuppressWarnings("deprecation")
private static ByteBuf unwrapSwapped(ByteBuf buf) {
  if (buf instanceof SwappedByteBuf) {
    do {
      buf = buf.unwrap();
    } while (buf instanceof SwappedByteBuf);
    return buf;
  }
  return buf;
}

代码示例来源:origin: redisson/redisson

UnreleasableByteBuf(ByteBuf buf) {
  super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);
}

代码示例来源:origin: wildfly/wildfly

public static ByteBuf unwrap(ByteBuf buffer) {
 ByteBuf parent;
 while ((parent = buffer.unwrap()) != null && parent != buffer) { // this last part is just in case the semantic
   // ever changes where unwrap is returning itself
   buffer = parent;
 }
 return buffer;
}

代码示例来源:origin: wildfly/wildfly

@SuppressWarnings("deprecation")
private static ByteBuf unwrapSwapped(ByteBuf buf) {
  if (buf instanceof SwappedByteBuf) {
    do {
      buf = buf.unwrap();
    } while (buf instanceof SwappedByteBuf);
    return buf;
  }
  return buf;
}

代码示例来源:origin: wildfly/wildfly

UnreleasableByteBuf(ByteBuf buf) {
  super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);
}

代码示例来源:origin: netty/netty

public ReadOnlyByteBuf(ByteBuf buffer) {
  super(buffer.maxCapacity());
  if (buffer instanceof ReadOnlyByteBuf || buffer instanceof DuplicatedByteBuf) {
    this.buffer = buffer.unwrap();
  } else {
    this.buffer = buffer;
  }
  setIndex(buffer.readerIndex(), buffer.writerIndex());
}

代码示例来源:origin: netty/netty

/**
 * Encode a {@link CharSequence} in <a href="http://en.wikipedia.org/wiki/UTF-8">UTF-8</a> and write
 * it into {@code reserveBytes} of a {@link ByteBuf}.
 * <p>
 * The {@code reserveBytes} must be computed (ie eagerly using {@link #utf8MaxBytes(CharSequence)}
 * or exactly with {@link #utf8Bytes(CharSequence)}) to ensure this method to not fail: for performance reasons
 * the index checks will be performed using just {@code reserveBytes}.<br>
 * This method returns the actual number of bytes written.
 */
public static int reserveAndWriteUtf8(ByteBuf buf, CharSequence seq, int reserveBytes) {
  for (;;) {
    if (buf instanceof WrappedCompositeByteBuf) {
      // WrappedCompositeByteBuf is a sub-class of AbstractByteBuf so it needs special handling.
      buf = buf.unwrap();
    } else if (buf instanceof AbstractByteBuf) {
      AbstractByteBuf byteBuf = (AbstractByteBuf) buf;
      byteBuf.ensureWritable0(reserveBytes);
      int written = writeUtf8(byteBuf, byteBuf.writerIndex, seq, seq.length());
      byteBuf.writerIndex += written;
      return written;
    } else if (buf instanceof WrappedByteBuf) {
      // Unwrap as the wrapped buffer may be an AbstractByteBuf and so we can use fast-path.
      buf = buf.unwrap();
    } else {
      byte[] bytes = seq.toString().getBytes(CharsetUtil.UTF_8);
      buf.writeBytes(bytes);
      return bytes.length;
    }
  }
}

代码示例来源:origin: redisson/redisson

public ReadOnlyByteBuf(ByteBuf buffer) {
  super(buffer.maxCapacity());
  if (buffer instanceof ReadOnlyByteBuf || buffer instanceof DuplicatedByteBuf) {
    this.buffer = buffer.unwrap();
  } else {
    this.buffer = buffer;
  }
  setIndex(buffer.readerIndex(), buffer.writerIndex());
}

代码示例来源:origin: netty/netty

@SuppressWarnings("deprecation")
private Component newComponent(ByteBuf buf, int offset) {
  if (checkAccessible && buf.refCnt() == 0) {
    throw new IllegalReferenceCountException(0);
  }
  int srcIndex = buf.readerIndex(), len = buf.readableBytes();
  ByteBuf slice = null;
  if (buf instanceof AbstractUnpooledSlicedByteBuf) {
    srcIndex += ((AbstractUnpooledSlicedByteBuf) buf).idx(0);
    slice = buf;
    buf = buf.unwrap();
  } else if (buf instanceof PooledSlicedByteBuf) {
    srcIndex += ((PooledSlicedByteBuf) buf).adjustment;
    slice = buf;
    buf = buf.unwrap();
  }
  return new Component(buf.order(ByteOrder.BIG_ENDIAN), srcIndex, offset, len, slice);
}

代码示例来源:origin: netty/netty

if (buf instanceof WrappedCompositeByteBuf) {
  buf = buf.unwrap();
} else if (buf instanceof AbstractByteBuf) {
  AbstractByteBuf byteBuf = (AbstractByteBuf) buf;
} else if (buf instanceof WrappedByteBuf) {
  buf = buf.unwrap();
} else {
  byte[] bytes = seq.toString().getBytes(CharsetUtil.US_ASCII);

代码示例来源:origin: wildfly/wildfly

public ReadOnlyByteBuf(ByteBuf buffer) {
  super(buffer.maxCapacity());
  if (buffer instanceof ReadOnlyByteBuf || buffer instanceof DuplicatedByteBuf) {
    this.buffer = buffer.unwrap();
  } else {
    this.buffer = buffer;
  }
  setIndex(buffer.readerIndex(), buffer.writerIndex());
}

代码示例来源:origin: redisson/redisson

@SuppressWarnings("deprecation")
private Component newComponent(ByteBuf buf, int offset) {
  if (checkAccessible && buf.refCnt() == 0) {
    throw new IllegalReferenceCountException(0);
  }
  int srcIndex = buf.readerIndex(), len = buf.readableBytes();
  ByteBuf slice = null;
  if (buf instanceof AbstractUnpooledSlicedByteBuf) {
    srcIndex += ((AbstractUnpooledSlicedByteBuf) buf).idx(0);
    slice = buf;
    buf = buf.unwrap();
  } else if (buf instanceof PooledSlicedByteBuf) {
    srcIndex += ((PooledSlicedByteBuf) buf).adjustment;
    slice = buf;
    buf = buf.unwrap();
  }
  return new Component(buf.order(ByteOrder.BIG_ENDIAN), srcIndex, offset, len, slice);
}

代码示例来源:origin: netty/netty

AbstractUnpooledSlicedByteBuf(ByteBuf buffer, int index, int length) {
  super(length);
  checkSliceOutOfBounds(index, length, buffer);
  if (buffer instanceof AbstractUnpooledSlicedByteBuf) {
    this.buffer = ((AbstractUnpooledSlicedByteBuf) buffer).buffer;
    adjustment = ((AbstractUnpooledSlicedByteBuf) buffer).adjustment + index;
  } else if (buffer instanceof DuplicatedByteBuf) {
    this.buffer = buffer.unwrap();
    adjustment = index;
  } else {
    this.buffer = buffer;
    adjustment = index;
  }
  initLength(length);
  writerIndex(length);
}

代码示例来源:origin: netty/netty

DuplicatedByteBuf(ByteBuf buffer, int readerIndex, int writerIndex) {
  super(buffer.maxCapacity());
  if (buffer instanceof DuplicatedByteBuf) {
    this.buffer = ((DuplicatedByteBuf) buffer).buffer;
  } else if (buffer instanceof AbstractPooledDerivedByteBuf) {
    this.buffer = buffer.unwrap();
  } else {
    this.buffer = buffer;
  }
  setIndex(readerIndex, writerIndex);
  markReaderIndex();
  markWriterIndex();
}

代码示例来源:origin: redisson/redisson

AbstractUnpooledSlicedByteBuf(ByteBuf buffer, int index, int length) {
  super(length);
  checkSliceOutOfBounds(index, length, buffer);
  if (buffer instanceof AbstractUnpooledSlicedByteBuf) {
    this.buffer = ((AbstractUnpooledSlicedByteBuf) buffer).buffer;
    adjustment = ((AbstractUnpooledSlicedByteBuf) buffer).adjustment + index;
  } else if (buffer instanceof DuplicatedByteBuf) {
    this.buffer = buffer.unwrap();
    adjustment = index;
  } else {
    this.buffer = buffer;
    adjustment = index;
  }
  initLength(length);
  writerIndex(length);
}

代码示例来源:origin: redisson/redisson

DuplicatedByteBuf(ByteBuf buffer, int readerIndex, int writerIndex) {
  super(buffer.maxCapacity());
  if (buffer instanceof DuplicatedByteBuf) {
    this.buffer = ((DuplicatedByteBuf) buffer).buffer;
  } else if (buffer instanceof AbstractPooledDerivedByteBuf) {
    this.buffer = buffer.unwrap();
  } else {
    this.buffer = buffer;
  }
  setIndex(readerIndex, writerIndex);
  markReaderIndex();
  markWriterIndex();
}

代码示例来源:origin: wildfly/wildfly

DuplicatedByteBuf(ByteBuf buffer, int readerIndex, int writerIndex) {
  super(buffer.maxCapacity());
  if (buffer instanceof DuplicatedByteBuf) {
    this.buffer = ((DuplicatedByteBuf) buffer).buffer;
  } else if (buffer instanceof AbstractPooledDerivedByteBuf) {
    this.buffer = buffer.unwrap();
  } else {
    this.buffer = buffer;
  }
  setIndex(readerIndex, writerIndex);
  markReaderIndex();
  markWriterIndex();
}

代码示例来源:origin: eclipse-vertx/vert.x

@Test
 public void testDirect() {
  Buffer buff = Buffer.factory.directBuffer("hello world".getBytes());
  assertEquals("hello world", buff.toString());
  buff.appendString(" foobar");
  assertEquals("hello world foobar", buff.toString());
  ByteBuf bb = buff.getByteBuf().unwrap();
  assertTrue(bb.isDirect());
  assertTrue(bb.release());
  try {
   // Check it's deallocated
   buff.toString();
   fail();
  } catch (IllegalReferenceCountException e) {
  }
 }
}

相关文章

ByteBuf类方法