org.glassfish.grizzly.Buffer类的使用及代码示例

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

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

Buffer介绍

[英]JDK ByteBuffer was taken as base for Grizzly Buffer interface, but Buffer has several extensions: it's possible to prepend some data to a Buffer and release Buffer, when it's not required any more.
[中]JDK ByteBuffer被用作Grizzly Buffer接口的基础,但Buffer有几个扩展:当不再需要缓冲区时,可以将一些数据预先添加到缓冲区并释放缓冲区。

代码示例

代码示例来源:origin: apache/incubator-dubbo

@Override
public NextAction handleRead(FilterChainContext context) throws IOException {
  Object message = context.getMessage();
  Connection<?> connection = context.getConnection();
  Channel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler);
  try {
          previousData.writeBytes(grizzlyBuffer.toByteBuffer());
          frame = previousData;
        } else {
          int size = previousData.readableBytes() + grizzlyBuffer.remaining();
          frame = ChannelBuffers.dynamicBuffer(size > bufferSize ? size : bufferSize);
          frame.writeBytes(previousData, previousData.readableBytes());
          frame.writeBytes(grizzlyBuffer.toByteBuffer());
        frame = ChannelBuffers.wrappedBuffer(grizzlyBuffer.toByteBuffer());
          return context.getStopAction();
        } else {
          if (savedReadIndex == frame.readerIndex()) {

代码示例来源:origin: com.ning/async-http-client

@Override
public byte[] getBodyPartBytes() {
  byte[] bytes = contentBytes.get();
  if (bytes != null) {
    return bytes;
  }
  final Buffer b = content.getContent();
  final int origPos = b.position();
  bytes = new byte[b.remaining()];
  b.get(bytes);
  b.flip();
  b.position(origPos);
  contentBytes.compareAndSet(null, bytes);
  return bytes;
}

代码示例来源:origin: apache/incubator-dubbo

@Override
public NextAction handleWrite(FilterChainContext context) throws IOException {
  Connection<?> connection = context.getConnection();
  GrizzlyChannel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler);
  try {
    ChannelBuffer channelBuffer = ChannelBuffers.dynamicBuffer(1024); // Do not need to close
    Object msg = context.getMessage();
    codec.encode(channel, channelBuffer, msg);
    GrizzlyChannel.removeChannelIfDisconnected(connection);
    Buffer buffer = connection.getTransport().getMemoryManager().allocate(channelBuffer.readableBytes());
    buffer.put(channelBuffer.toByteBuffer());
    buffer.flip();
    buffer.allowBufferDispose(true);
    context.setMessage(buffer);
  } finally {
    GrizzlyChannel.removeChannelIfDisconnected(connection);
  }
  return context.getInvokeAction();
}

代码示例来源:origin: com.ning/async-http-client

@Override
public byte[] getResponseBodyAsBytes() throws IOException {
  final byte[] responseBodyBytes = new byte[responseBody.remaining()];
  final int origPos = responseBody.position();
  responseBody.get(responseBodyBytes);
  responseBody.position(origPos);
  return responseBodyBytes;
}

代码示例来源:origin: javaee/grizzly

private void sendEndResponse(final FilterChainContext ctx) throws IOException {
  final Connection connection = ctx.getConnection();
  final MemoryManager mm = connection.getTransport().getMemoryManager();
  final Buffer buffer = mm.allocate(6);
  buffer.put((byte) 'A');
  buffer.put((byte) 'B');
  buffer.putShort((short) 2);
  buffer.put(AjpConstants.JK_AJP13_END_RESPONSE);
  buffer.put((byte) 1);
  buffer.flip();
  buffer.allowBufferDispose(true);
  ctx.write(buffer);
}

代码示例来源:origin: javaee/grizzly

final HttpContent decodeContent(final FilterChainContext ctx,
                HttpContent httpContent) {
  if (!httpContent.getContent().hasRemaining()
      || isResponseToHeadRequest(httpContent.getHttpHeader())) {
    if (httpContent.isLast()) {
  final Connection connection = ctx.getConnection();
  final MemoryManager memoryManager = connection.getMemoryManager();
  final HttpHeader httpHeader = httpContent.getHttpHeader();
  final ContentParsingState parsingState =
      ((HttpPacketParsing) httpHeader).getContentParsingState();
  final List<ContentEncoding> encodings = httpHeader.getContentEncodings(true);
      final Buffer newChunk = httpContent.getContent();
      httpContent.setContent(
          Buffers.appendBuffers(memoryManager, oldRemainder, newChunk));

代码示例来源:origin: org.glassfish.grizzly/grizzly-websockets-server

private static NextAction handleClientHandShake(FilterChainContext ctx, HttpContent content) {
    final WebSocketHolder holder = WebSocketHolder.get(ctx.getConnection());
    holder.handshake.validateServerResponse((HttpResponsePacket) content.getHttpHeader());
    holder.webSocket.onConnect();
    
    if (content.getContent().hasRemaining()) {
      return ctx.getRerunFilterAction();
    } else {
      content.recycle();
      return ctx.getStopAction();
    }
  }
}

代码示例来源:origin: javaee/grizzly

Buffer cloneContent(final MemoryManager memoryManager) {
  final Buffer buffer;
  
  final int length = remaining();
  
  if (!hasClonedArray) {
    buffer = memoryManager.allocate(length);
    buffer.put(heap, offset + pos, length);
    buffer.flip();
  } else {
    buffer = Buffers.wrap(memoryManager, heap, offset + pos, length);
  }
  buffer.allowBufferDispose(true);
  dispose();
  
  return buffer;
}

代码示例来源:origin: com.ning/async-http-client

throws IOException {
  final MemoryManager mm = ctx.getMemoryManager();
  Buffer buffer = mm.allocate(512);
  final byte[] b = new byte[512];
  int read;
    if (read > buffer.remaining()) {
      buffer = mm.reallocate(buffer, buffer.capacity() + 512);
    buffer.put(b, 0, read);
  buffer.trim();
  if (buffer.hasRemaining()) {
    final HttpContent content = requestPacket.httpContentBuilder()
        .content(buffer)
        .last(true)
        .build();
    buffer.allowBufferDispose(false);
    ctx.write(content, ((!requestPacket.isCommitted()) ? ctx.getTransportContext().getCompletionHandler() : null));

代码示例来源:origin: javaee/grizzly

System.out.println("Writing request:\n");
System.out.println(request.toString());
ctx.write(request); // write the request
MemoryManager mm = ctx.getConnection().getTransport().getMemoryManager();
for (int i = 0, len = CONTENT.length; i < len; i++) {
  HttpContent.Builder contentBuilder = request.httpContentBuilder();
  Buffer b = Buffers.wrap(mm, CONTENT[i]);
  contentBuilder.content(b);
  HttpContent content = contentBuilder.build();
  System.out.printf("(Client writing: %s)\n", b.toStringContent());
  ctx.write(content);
  try {
    Thread.sleep(2000);

代码示例来源:origin: org.glassfish.grizzly/grizzly-websockets-server

@SuppressWarnings("unchecked")
protected void sendRaw(byte[] rawData) {
  final Connection connection = protocolHandler.getConnection();
  final MemoryManager mm = connection.getTransport().getMemoryManager();
  final Buffer buffer = Buffers.wrap(mm, rawData);
  buffer.allowBufferDispose(false);
  connection.write(buffer);
}

代码示例来源:origin: javaee/grizzly

private int extractType(final FilterChainContext ctx, final Buffer buffer) {
    return !httpRequestInProcessAttr.isSet(ctx.getConnection()) ?
        // if request is no in process - it should be a new Ajp message
        buffer.get() & 0xFF :
        // Ajp Data Packet
        AjpConstants.JK_AJP13_DATA;
  }
}

代码示例来源:origin: org.glassfish.grizzly/grizzly-websockets-server

@Override
  public Result find(final PUContext puContext, final FilterChainContext ctx) {
    final Buffer buffer = ctx.getMessage();
    try {
      final int expectedLength = getSSLPacketSize(buffer);
      if (expectedLength == -1
          || buffer.remaining() < expectedLength) {
        return Result.NEED_MORE_DATA;
      }
    } catch (SSLException e) {
      LOGGER.log(Level.FINE, "Packet header is not SSL", e);
      return Result.NOT_FOUND;
    }

    return Result.FOUND;
  }
}

代码示例来源:origin: com.ning/async-http-client

final MemoryManager mm = ctx.getMemoryManager();
boolean last = false;
  Buffer buffer = mm.allocate(MAX_CHUNK_SIZE);
  buffer.allowBufferDispose(true);
  final long readBytes = bodyLocal.read(buffer.toByteBuffer());
  if (readBytes > 0) {
    buffer.position((int) readBytes);
    buffer.trim();
  } else {
    buffer.dispose();
      requestPacket.httpContentBuilder().content(buffer).
          last(last).build();
  ctx.write(content, ((!requestPacket.isCommitted()) ? ctx.getTransportContext().getCompletionHandler() : null));

代码示例来源:origin: javaee/grizzly

public void append(final BufferChunk bc) {
  final int oldPos = buffer.position();
  final int oldLim = buffer.limit();
  final int srcLen = bc.getLength()
      ;
  Buffers.setPositionLimit(buffer, end, end + srcLen);
  buffer.put(bc.getBuffer(), bc.getStart(), srcLen);
  Buffers.setPositionLimit(buffer, oldPos, oldLim);
  end += srcLen;
}

代码示例来源:origin: org.glassfish.grizzly/grizzly-websockets-server

@Override
public Buffer toBuffer(final MemoryManager memoryManager) {
  final Buffer buffer = memoryManager.allocate(FRAME_HEADER_SIZE + 8);
  serializeFrameHeader(buffer);
  buffer.putInt(lastStreamId & 0x7fffffff);
  buffer.putInt(errorCode.getCode());
  
  buffer.trim();
  
  if (additionalDebugData == null || !additionalDebugData.hasRemaining()) {
    return buffer;
  }
  
  final CompositeBuffer cb = CompositeBuffer.newBuffer(
      memoryManager,
      buffer, additionalDebugData);
  cb.allowBufferDispose(true);
  cb.allowInternalBuffersDispose(true);
  return cb;
}

代码示例来源:origin: com.ning/async-http-client

final Body bodyLocal = feedableBodyGenerator.createBody();
try {
  final MemoryManager mm = ctx.getMemoryManager();
  boolean last = false;
  while (!last) {
    Buffer buffer = mm.allocate(PayloadGenerator.MAX_CHUNK_SIZE);
    buffer.allowBufferDispose(true);
    final long readBytes = bodyLocal.read(buffer.toByteBuffer());
    if (readBytes > 0) {
      buffer.position((int) readBytes);
      buffer.trim();
    } else {
      buffer.dispose();
      if (readBytes < 0) {
        last = true;

代码示例来源:origin: javaee/grizzly

static Buffer copy(final MemoryManager memoryManager,
    final Buffer buffer) {
  final Buffer tmpBuf = memoryManager.allocate(buffer.remaining());
  tmpBuf.put(buffer);
  return tmpBuf.flip();
}

代码示例来源:origin: com.ning/async-http-client

@Override
protected void onHttpContentEncoded(final HttpContent content,
    final FilterChainContext ctx) {
  
  final HttpTransactionContext context =
      HttpTransactionContext.currentTransaction(content.getHttpHeader());
  
  final AsyncHandler handler = context.getAsyncHandler();
  if (handler instanceof TransferCompletionHandler) {
    final int written = content.getContent().remaining();
    context.totalBodyWritten += written;
    final long total = context.totalBodyWritten;
    ((TransferCompletionHandler) handler).onContentWriteProgress(
        written, total, content.getHttpHeader().getContentLength());
  }
}

代码示例来源:origin: javaee/grizzly

@Override
public Buffer toBuffer(final MemoryManager memoryManager) {
  final boolean isPadded = isFlagSet(PADDED);
  final int extraHeaderLen = isPadded ? 1 : 0;
  final Buffer buffer = memoryManager.allocate(
      FRAME_HEADER_SIZE + extraHeaderLen);
  serializeFrameHeader(buffer);
  if (isPadded) {
    buffer.put((byte) (padLength & 0xff));
  }
  buffer.trim();
  final CompositeBuffer cb = CompositeBuffer.newBuffer(
      memoryManager, buffer, data);
  
  cb.allowBufferDispose(true);
  cb.allowInternalBuffersDispose(true);
  
  return cb;
}

相关文章