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

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

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

ByteBuf.memoryAddress介绍

[英]Returns the low-level memory address that point to the first byte of ths backing data.
[中]返回指向备份数据第一个字节的低级内存地址。

代码示例

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

static long memoryAddress(ByteBuf buf) {
  assert buf.isDirect();
  return buf.hasMemoryAddress() ? buf.memoryAddress() : Buffer.address(buf.nioBuffer());
}

代码示例来源:origin: apache/pulsar

@Override
  public ByteBuf decode(ByteBuf encoded, int uncompressedLength) throws IOException {
    ByteBuf uncompressed = PooledByteBufAllocator.DEFAULT.directBuffer(uncompressedLength, uncompressedLength);

    if (encoded.hasMemoryAddress()) {
      Zstd.decompressUnsafe(uncompressed.memoryAddress(), uncompressedLength,
          encoded.memoryAddress() + encoded.readerIndex(),
          encoded.readableBytes());
    } else {
      ByteBuffer uncompressedNio = uncompressed.nioBuffer(0, uncompressedLength);
      ByteBuffer encodedNio = encoded.nioBuffer(encoded.readerIndex(), encoded.readableBytes());

      Zstd.decompress(uncompressedNio, encodedNio);
    }

    uncompressed.writerIndex(uncompressedLength);
    return uncompressed;
  }
}

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

static long memoryAddress(ByteBuf buf) {
  assert buf.isDirect();
  return buf.hasMemoryAddress() ? buf.memoryAddress() : Buffer.address(buf.nioBuffer());
}

代码示例来源:origin: apache/pulsar

@Override
public ByteBuf encode(ByteBuf source) {
  int uncompressedLength = source.readableBytes();
  int maxLength = (int) Zstd.compressBound(uncompressedLength);
  ByteBuf target = PooledByteBufAllocator.DEFAULT.directBuffer(maxLength, maxLength);
  int compressedLength;
  if (source.hasMemoryAddress()) {
    compressedLength = (int) Zstd.compressUnsafe(target.memoryAddress(), maxLength,
        source.memoryAddress() + source.readerIndex(),
        uncompressedLength, ZSTD_COMPRESSION_LEVEL);
  } else {
    ByteBuffer sourceNio = source.nioBuffer(source.readerIndex(), source.readableBytes());
    ByteBuffer targetNio = target.nioBuffer(0, maxLength);
    compressedLength = Zstd.compress(targetNio, sourceNio, ZSTD_COMPRESSION_LEVEL);
  }
  target.writerIndex(compressedLength);
  return target;
}

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

protected final int doWriteBytes(ChannelOutboundBuffer in, ByteBuf buf) throws Exception {
  if (buf.hasMemoryAddress()) {
    int localFlushedAmount = socket.writeAddress(buf.memoryAddress(), buf.readerIndex(), buf.writerIndex());
    if (localFlushedAmount > 0) {
      in.removeBytes(localFlushedAmount);
      return 1;
    }
  } else {
    final ByteBuffer nioBuf = buf.nioBufferCount() == 1 ?
        buf.internalNioBuffer(buf.readerIndex(), buf.readableBytes()) : buf.nioBuffer();
    int localFlushedAmount = socket.write(nioBuf, nioBuf.position(), nioBuf.limit());
    if (localFlushedAmount > 0) {
      nioBuf.position(nioBuf.position() + localFlushedAmount);
      in.removeBytes(localFlushedAmount);
      return 1;
    }
  }
  return WRITE_STATUS_SNDBUF_FULL;
}

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

protected final int doWriteBytes(ChannelOutboundBuffer in, ByteBuf buf) throws Exception {
  if (buf.hasMemoryAddress()) {
    int localFlushedAmount = socket.writeAddress(buf.memoryAddress(), buf.readerIndex(), buf.writerIndex());
    if (localFlushedAmount > 0) {
      in.removeBytes(localFlushedAmount);
      return 1;
    }
  } else {
    final ByteBuffer nioBuf = buf.nioBufferCount() == 1 ?
        buf.internalNioBuffer(buf.readerIndex(), buf.readableBytes()) : buf.nioBuffer();
    int localFlushedAmount = socket.write(nioBuf, nioBuf.position(), nioBuf.limit());
    if (localFlushedAmount > 0) {
      nioBuf.position(nioBuf.position() + localFlushedAmount);
      in.removeBytes(localFlushedAmount);
      return 1;
    }
  }
  return WRITE_STATUS_SNDBUF_FULL;
}

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

static ByteBuf copy(AbstractByteBuf buf, long addr, int index, int length) {
  buf.checkIndex(index, length);
  ByteBuf copy = buf.alloc().directBuffer(length, buf.maxCapacity());
  if (length != 0) {
    if (copy.hasMemoryAddress()) {
      PlatformDependent.copyMemory(addr, copy.memoryAddress(), length);
      copy.setIndex(0, length);
    } else {
      copy.writeBytes(buf, index, length);
    }
  }
  return copy;
}

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

@Override
public ByteBuf getBytes(int index, ByteBuf dst, int dstIndex, int length) {
  checkDstIndex(index, length, dstIndex, dst.capacity());
  if (dst.hasMemoryAddress()) {
    PlatformDependent.copyMemory(array, index, dst.memoryAddress() + dstIndex, length);
  } else if (dst.hasArray()) {
    getBytes(index, dst.array(), dst.arrayOffset() + dstIndex, length);
  } else {
    dst.setBytes(dstIndex, array, index, length);
  }
  return this;
}

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

@Override
public ByteBuf setBytes(int index, ByteBuf src, int srcIndex, int length) {
  checkSrcIndex(index, length, srcIndex, src.capacity());
  if (src.hasMemoryAddress()) {
    PlatformDependent.copyMemory(src.memoryAddress() + srcIndex, array, index, length);
  } else  if (src.hasArray()) {
    setBytes(index, src.array(), src.arrayOffset() + srcIndex, length);
  } else {
    src.getBytes(srcIndex, array, index, length);
  }
  return this;
}

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

protected final int doWriteBytes(ChannelOutboundBuffer in, ByteBuf buf) throws Exception {
  if (buf.hasMemoryAddress()) {
    int localFlushedAmount = socket.writeAddress(buf.memoryAddress(), buf.readerIndex(), buf.writerIndex());
    if (localFlushedAmount > 0) {
      in.removeBytes(localFlushedAmount);
      return 1;
    }
  } else {
    final ByteBuffer nioBuf = buf.nioBufferCount() == 1 ?
        buf.internalNioBuffer(buf.readerIndex(), buf.readableBytes()) : buf.nioBuffer();
    int localFlushedAmount = socket.write(nioBuf, nioBuf.position(), nioBuf.limit());
    if (localFlushedAmount > 0) {
      nioBuf.position(nioBuf.position() + localFlushedAmount);
      in.removeBytes(localFlushedAmount);
      return 1;
    }
  }
  return WRITE_STATUS_SNDBUF_FULL;
}

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

@Override
public ByteBuf copy(int index, int length) {
  checkIndex(index, length);
  ByteBuf copy = alloc().directBuffer(length, maxCapacity());
  if (length != 0) {
    if (copy.hasMemoryAddress()) {
      PlatformDependent.copyMemory(addr(index), copy.memoryAddress(), length);
      copy.setIndex(0, length);
    } else {
      copy.writeBytes(this, index, length);
    }
  }
  return copy;
}

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

static ByteBuf copy(AbstractByteBuf buf, long addr, int index, int length) {
  buf.checkIndex(index, length);
  ByteBuf copy = buf.alloc().directBuffer(length, buf.maxCapacity());
  if (length != 0) {
    if (copy.hasMemoryAddress()) {
      PlatformDependent.copyMemory(addr, copy.memoryAddress(), length);
      copy.setIndex(0, length);
    } else {
      copy.writeBytes(buf, index, length);
    }
  }
  return copy;
}

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

static void getBytes(AbstractByteBuf buf, long addr, int index, ByteBuf dst, int dstIndex, int length) {
  buf.checkIndex(index, length);
  checkNotNull(dst, "dst");
  if (isOutOfBounds(dstIndex, length, dst.capacity())) {
    throw new IndexOutOfBoundsException("dstIndex: " + dstIndex);
  }
  if (dst.hasMemoryAddress()) {
    PlatformDependent.copyMemory(addr, dst.memoryAddress() + dstIndex, length);
  } else if (dst.hasArray()) {
    PlatformDependent.copyMemory(addr, dst.array(), dst.arrayOffset() + dstIndex, length);
  } else {
    dst.setBytes(dstIndex, buf, index, length);
  }
}

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

@Override
public ByteBuf getBytes(int index, ByteBuf dst, int dstIndex, int length) {
  checkIndex(index, length);
  if (dst == null) {
    throw new NullPointerException("dst");
  }
  if (dstIndex < 0 || dstIndex > dst.capacity() - length) {
    throw new IndexOutOfBoundsException("dstIndex: " + dstIndex);
  }
  if (dst.hasMemoryAddress()) {
    PlatformDependent.copyMemory(addr(index), dst.memoryAddress() + dstIndex, length);
  } else if (dst.hasArray()) {
    PlatformDependent.copyMemory(addr(index), dst.array(), dst.arrayOffset() + dstIndex, length);
  } else {
    dst.setBytes(dstIndex, this, index, length);
  }
  return this;
}

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

@Override
public ByteBuf setBytes(int index, ByteBuf src, int srcIndex, int length) {
  checkSrcIndex(index, length, srcIndex, src.capacity());
  if (src.hasMemoryAddress()) {
    PlatformDependent.copyMemory(src.memoryAddress() + srcIndex, array, index, length);
  } else  if (src.hasArray()) {
    setBytes(index, src.array(), src.arrayOffset() + srcIndex, length);
  } else {
    src.getBytes(srcIndex, array, index, length);
  }
  return this;
}

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

static void setBytes(AbstractByteBuf buf, long addr, int index, ByteBuf src, int srcIndex, int length) {
  buf.checkIndex(index, length);
  checkNotNull(src, "src");
  if (isOutOfBounds(srcIndex, length, src.capacity())) {
    throw new IndexOutOfBoundsException("srcIndex: " + srcIndex);
  }
  if (length != 0) {
    if (src.hasMemoryAddress()) {
      PlatformDependent.copyMemory(src.memoryAddress() + srcIndex, addr, length);
    } else if (src.hasArray()) {
      PlatformDependent.copyMemory(src.array(), src.arrayOffset() + srcIndex, addr, length);
    } else {
      src.getBytes(srcIndex, buf, index, length);
    }
  }
}

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

@Override
public ByteBuf getBytes(int index, ByteBuf dst, int dstIndex, int length) {
  checkDstIndex(index, length, dstIndex, dst.capacity());
  if (dst.hasMemoryAddress()) {
    PlatformDependent.copyMemory(array, index, dst.memoryAddress() + dstIndex, length);
  } else if (dst.hasArray()) {
    getBytes(index, dst.array(), dst.arrayOffset() + dstIndex, length);
  } else {
    dst.setBytes(dstIndex, array, index, length);
  }
  return this;
}

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

@Override
public final ByteBuf setBytes(int index, ByteBuf src, int srcIndex, int length) {
  checkSrcIndex(index, length, srcIndex, src.capacity());
  if (src.hasMemoryAddress()) {
    PlatformDependent.copyMemory(src.memoryAddress() + srcIndex, memory, idx(index), length);
  } else if (src.hasArray()) {
    setBytes(index, src.array(), src.arrayOffset() + srcIndex, length);
  } else {
    src.getBytes(srcIndex, memory, idx(index), length);
  }
  return this;
}

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

@Override
public final ByteBuf getBytes(int index, ByteBuf dst, int dstIndex, int length) {
  checkDstIndex(index, length, dstIndex, dst.capacity());
  if (dst.hasMemoryAddress()) {
    PlatformDependent.copyMemory(memory, idx(index), dst.memoryAddress() + dstIndex, length);
  } else if (dst.hasArray()) {
    getBytes(index, dst.array(), dst.arrayOffset() + dstIndex, length);
  } else {
    dst.setBytes(dstIndex, memory, idx(index), length);
  }
  return this;
}

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

/**
 * Read bytes into the given {@link ByteBuf} and return the amount.
 */
protected final int doReadBytes(ByteBuf byteBuf) throws Exception {
  int writerIndex = byteBuf.writerIndex();
  int localReadAmount;
  unsafe().recvBufAllocHandle().attemptedBytesRead(byteBuf.writableBytes());
  if (byteBuf.hasMemoryAddress()) {
    localReadAmount = socket.readAddress(byteBuf.memoryAddress(), writerIndex, byteBuf.capacity());
  } else {
    ByteBuffer buf = byteBuf.internalNioBuffer(writerIndex, byteBuf.writableBytes());
    localReadAmount = socket.read(buf, buf.position(), buf.limit());
  }
  if (localReadAmount > 0) {
    byteBuf.writerIndex(writerIndex + localReadAmount);
  }
  return localReadAmount;
}

相关文章

ByteBuf类方法