private ByteBuf writeHeadersForHttp(AtmosphereResponse response) throws UnsupportedEncodingException { if (writeHeader && !headerWritten.getAndSet(true) && response != null) { return Unpooled.wrappedBuffer(constructStatusAndHeaders(response, -1).getBytes("UTF-8")); } return Unpooled.EMPTY_BUFFER; }
@Override public void operationComplete(ChannelFuture future) throws Exception { prepareForClose(response); } });
@Override public void close(final AtmosphereResponse response) throws IOException { if (!channel.isOpen() || doneProcessing.get()) return; ByteBuf writeBuffer = writeHeadersForHttp(response); if (writeBuffer.capacity() > 0 && response != null) { try { lock.writeLock().lock(); channel.writeAndFlush(writeBuffer).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { prepareForClose(response); } }); channel.flush(); } finally { lock.writeLock().unlock(); } } else { try { lock.writeLock().lock(); prepareForClose(response); } finally { lock.writeLock().unlock(); } } }
void _close(AtmosphereResponse response) throws UnsupportedEncodingException { if (!doneProcessing.getAndSet(true) && channel.isOpen()) { ByteBuf writeBuffer = writeHeaders(response); if (writeBuffer.capacity() != 0) { writeBuffer = Unpooled.wrappedBuffer(writeBuffer, END); } else { writeBuffer = Unpooled.buffer(ENDCHUNK.length).writeBytes(ENDCHUNK); } channel.writeAndFlush(writeBuffer).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { logger.trace("Async Closing Done {}", channel); if (!keepAlive) { channel.close().awaitUninterruptibly(); } } }); } }
void prepareForClose(final AtmosphereResponse response) throws UnsupportedEncodingException { AtmosphereResource r = response != null ? response.resource() : null; if (r == null || r.isSuspended() && !r.isResumed()) { keepAlive = false; } _close(response); }
new ChunkedWriter(ctx.channel(), true, ka) : new StreamWriter(ctx.channel(), true, ka); new ChunkedWriter(ctx.channel(), isLast, ka) : new StreamWriter(ctx.channel(), isLast, ka); method = request.getMethod();
@Override public void close(final AtmosphereResponse response) throws IOException { if (!channel.isOpen() || doneProcessing.get()) return; ByteBuf writeBuffer = writeHeadersForHttp(response); if (writeBuffer.capacity() > 0 && response != null) { try { lock.writeLock().lock(); channel.writeAndFlush(writeBuffer).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { prepareForClose(response); } }); channel.flush(); } finally { lock.writeLock().unlock(); } } else { try { lock.writeLock().lock(); prepareForClose(response); } finally { lock.writeLock().unlock(); } } }
void _close(AtmosphereResponse response) throws UnsupportedEncodingException { if (!doneProcessing.getAndSet(true) && channel.isOpen()) { ByteBuf writeBuffer = writeHeaders(response); if (writeBuffer.capacity() != 0) { writeBuffer = Unpooled.wrappedBuffer(writeBuffer, END); } else { writeBuffer = Unpooled.buffer(ENDCHUNK.length).writeBytes(ENDCHUNK); } channel.writeAndFlush(writeBuffer).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { logger.trace("Async Closing Done {}", channel); if (!keepAlive) { channel.close().awaitUninterruptibly(); } } }); } }
void prepareForClose(final AtmosphereResponse response) throws UnsupportedEncodingException { AtmosphereResource r = response != null ? response.resource() : null; if (r == null || r.isSuspended() && !r.isResumed()) { keepAlive = false; } _close(response); }
new ChunkedWriter(ctx.channel(), true, ka) : new StreamWriter(ctx.channel(), true, ka); new ChunkedWriter(ctx.channel(), isLast, ka) : new StreamWriter(ctx.channel(), isLast, ka); method = request.getMethod();
private ByteBuf writeHeadersForHttp(AtmosphereResponse response) throws UnsupportedEncodingException { if (writeHeader && !headerWritten.getAndSet(true) && response != null) { return Unpooled.wrappedBuffer(constructStatusAndHeaders(response, -1).getBytes("UTF-8")); } return Unpooled.EMPTY_BUFFER; }
ByteBuf writeBuffer = writeHeaders(response); if (headerWritten.get()) { if (writeBuffer.capacity() != 0) {
@Override public void operationComplete(ChannelFuture future) throws Exception { prepareForClose(response); } });
private ByteBuf writeHeaders(AtmosphereResponse response) throws UnsupportedEncodingException { if (writeHeader && !headerWritten.getAndSet(true) && response != null) { return Unpooled.wrappedBuffer(Unpooled.wrappedBuffer(constructStatusAndHeaders(response, -1).getBytes("UTF-8"))); } return Unpooled.EMPTY_BUFFER; }
ByteBuf writeBuffer = writeHeaders(response); if (headerWritten.get()) { if (writeBuffer.capacity() != 0) {
private ByteBuf writeHeaders(AtmosphereResponse response) throws UnsupportedEncodingException { if (writeHeader && !headerWritten.getAndSet(true) && response != null) { return Unpooled.wrappedBuffer(Unpooled.wrappedBuffer(constructStatusAndHeaders(response, -1).getBytes("UTF-8"))); } return Unpooled.EMPTY_BUFFER; }