本文整理了Java中org.glassfish.grizzly.Buffer
类的一些代码示例,展示了Buffer
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Buffer
类的具体详情如下:
包路径:org.glassfish.grizzly.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;
}
内容来源于网络,如有侵权,请联系作者删除!