private boolean exitAfterHandlingBody(Channel channel, NettyResponseFuture<?> future, HttpResponse response, AsyncHandler<?> handler) throws Exception { if (!response.isChunked()) { // no chunks expected, exiting if (response.getContent().readableBytes() > 0) // FIXME no need to notify an empty bodypart? updateBodyAndInterrupt(future, handler, new NettyResponseBodyPart(response, null, true)); finishUpdate(future, channel, false); return true; } return false; }
public ChannelBuffer getResponseBodyAsChannelBuffer() throws IOException { ChannelBuffer b = null; switch (bodyParts.size()) { case 0: b = ChannelBuffers.EMPTY_BUFFER; break; case 1: b = NettyResponseBodyPart.class.cast(bodyParts.get(0)).getChannelBuffer(); break; default: ChannelBuffer[] channelBuffers = new ChannelBuffer[bodyParts.size()]; for (int i = 0; i < bodyParts.size(); i++) { channelBuffers[i] = NettyResponseBodyPart.class.cast(bodyParts.get(i)).getChannelBuffer(); } b = ChannelBuffers.wrappedBuffer(channelBuffers); } return b; }
private boolean updateBodyAndInterrupt(NettyResponseFuture<?> future, AsyncHandler<?> handler, NettyResponseBodyPart bodyPart) throws Exception { boolean interrupt = handler.onBodyPartReceived(bodyPart) != STATE.CONTINUE; if (bodyPart.isUnderlyingConnectionToBeClosed()) future.setKeepAlive(false); return interrupt; }
public int writeTo(OutputStream outputStream) throws IOException { ChannelBuffer b = getChannelBuffer(); int read = b.readableBytes(); int index = b.readerIndex(); if (read > 0) { b.readBytes(outputStream, read); } b.readerIndex(index); return read; }
private void handleChunk(HttpChunk chunk,// final Channel channel,// final NettyResponseFuture<?> future,// AsyncHandler<?> handler) throws IOException, Exception { boolean last = chunk.isLast(); // we don't notify updateBodyAndInterrupt with the last chunk as it's empty if (last || updateBodyAndInterrupt(future, handler, new NettyResponseBodyPart(null, chunk, last))) { // only possible if last is true if (chunk instanceof HttpChunkTrailer) { HttpChunkTrailer chunkTrailer = (HttpChunkTrailer) chunk; if (!chunkTrailer.trailingHeaders().isEmpty()) { NettyResponseHeaders responseHeaders = new NettyResponseHeaders(future.getHttpHeaders(), chunkTrailer.trailingHeaders()); handler.onHeadersReceived(responseHeaders); } } finishUpdate(future, channel, !chunk.isLast()); } }
private boolean updateBodyAndInterrupt(NettyResponseFuture<?> future, AsyncHandler<?> handler, NettyResponseBodyPart bodyPart) throws Exception { boolean interrupt = handler.onBodyPartReceived(bodyPart) != STATE.CONTINUE; if (bodyPart.isUnderlyingConnectionToBeClosed()) future.setKeepAlive(false); return interrupt; }
public void onBinaryFragment(HttpResponseBodyPart part) { for (WebSocketListener listener : listeners) { if (listener instanceof WebSocketByteFragmentListener) WebSocketByteFragmentListener.class.cast(listener).onFragment(part); } if (interestedInByteMessages) { ChannelBuffer fragment = NettyResponseBodyPart.class.cast(part).getChannelBuffer(); if (part.isLast()) { if (bufferSize == 0) { notifyByteListeners(fragment); } else { bufferFragment(fragment); notifyByteListeners(wrappedBuffer(fragments().toArray(new ChannelBuffer[fragments().size()]))); } reset(); } else bufferFragment(fragment); } }
NettyResponseBodyPart part = new NettyResponseBodyPart(null, webSocketChunk, frame.isFinalFragment()); handler.onBodyPartReceived(part);
public void onTextFragment(HttpResponseBodyPart part) { for (WebSocketListener listener : listeners) { if (listener instanceof WebSocketTextFragmentListener) WebSocketTextFragmentListener.class.cast(listener).onFragment(part); } if (interestedInTextMessages) { ChannelBuffer fragment = NettyResponseBodyPart.class.cast(part).getChannelBuffer(); if (part.isLast()) { if (bufferSize == 0) { notifyTextListeners(fragment); } else { bufferFragment(fragment); notifyTextListeners(wrappedBuffer(fragments().toArray(new ChannelBuffer[fragments().size()]))); } reset(); } else bufferFragment(fragment); } }
private boolean exitAfterHandlingBody(Channel channel, NettyResponseFuture<?> future, HttpResponse response, AsyncHandler<?> handler) throws Exception { if (!response.isChunked()) { // no chunks expected, exiting if (response.getContent().readableBytes() > 0) // FIXME no need to notify an empty bodypart? updateBodyAndInterrupt(future, handler, new NettyResponseBodyPart(response, null, true)); finishUpdate(future, channel, false); return true; } return false; }
public ChannelBuffer getResponseBodyAsChannelBuffer() throws IOException { ChannelBuffer b = null; switch (bodyParts.size()) { case 0: b = ChannelBuffers.EMPTY_BUFFER; break; case 1: b = NettyResponseBodyPart.class.cast(bodyParts.get(0)).getChannelBuffer(); break; default: ChannelBuffer[] channelBuffers = new ChannelBuffer[bodyParts.size()]; for (int i = 0; i < bodyParts.size(); i++) { channelBuffers[i] = NettyResponseBodyPart.class.cast(bodyParts.get(i)).getChannelBuffer(); } b = ChannelBuffers.wrappedBuffer(channelBuffers); } return b; }
private void handleChunk(HttpChunk chunk,// final Channel channel,// final NettyResponseFuture<?> future,// AsyncHandler<?> handler) throws IOException, Exception { boolean last = chunk.isLast(); // we don't notify updateBodyAndInterrupt with the last chunk as it's empty if (last || updateBodyAndInterrupt(future, handler, new NettyResponseBodyPart(null, chunk, last))) { // only possible if last is true if (chunk instanceof HttpChunkTrailer) { HttpChunkTrailer chunkTrailer = (HttpChunkTrailer) chunk; if (!chunkTrailer.trailingHeaders().isEmpty()) { NettyResponseHeaders responseHeaders = new NettyResponseHeaders(future.getHttpHeaders(), chunkTrailer.trailingHeaders()); handler.onHeadersReceived(responseHeaders); } } finishUpdate(future, channel, !chunk.isLast()); } }
public int writeTo(OutputStream outputStream) throws IOException { ChannelBuffer b = getChannelBuffer(); int read = b.readableBytes(); int index = b.readerIndex(); if (read > 0) { b.readBytes(outputStream, read); } b.readerIndex(index); return read; }
NettyResponseBodyPart part = new NettyResponseBodyPart(null, webSocketChunk, frame.isFinalFragment()); handler.onBodyPartReceived(part);
public void onTextFragment(HttpResponseBodyPart part) { for (WebSocketListener listener : listeners) { if (listener instanceof WebSocketTextFragmentListener) WebSocketTextFragmentListener.class.cast(listener).onFragment(part); } if (interestedInTextMessages) { ChannelBuffer fragment = NettyResponseBodyPart.class.cast(part).getChannelBuffer(); if (part.isLast()) { if (bufferSize == 0) { notifyTextListeners(fragment); } else { bufferFragment(fragment); notifyTextListeners(wrappedBuffer(fragments().toArray(new ChannelBuffer[fragments().size()]))); } reset(); } else bufferFragment(fragment); } }
public void onBinaryFragment(HttpResponseBodyPart part) { for (WebSocketListener listener : listeners) { if (listener instanceof WebSocketByteFragmentListener) WebSocketByteFragmentListener.class.cast(listener).onFragment(part); } if (interestedInByteMessages) { ChannelBuffer fragment = NettyResponseBodyPart.class.cast(part).getChannelBuffer(); if (part.isLast()) { if (bufferSize == 0) { notifyByteListeners(fragment); } else { bufferFragment(fragment); notifyByteListeners(wrappedBuffer(fragments().toArray(new ChannelBuffer[fragments().size()]))); } reset(); } else bufferFragment(fragment); } }