@Override public void close() { this.nettyResponse.release(); this.context.close(); }
@Override public void close() { this.nettyResponse.release(); this.context.close(); }
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (!(msg instanceof FullHttpResponse)) { ctx.fireChannelRead(msg); return; } FullHttpResponse response = (FullHttpResponse) msg; try { if (!handshaker.isHandshakeComplete()) { handshaker.finishHandshake(ctx.channel(), response); ctx.fireUserEventTriggered( WebSocketClientProtocolHandler.ClientHandshakeStateEvent.HANDSHAKE_COMPLETE); ctx.pipeline().remove(this); return; } throw new IllegalStateException("WebSocketClientHandshaker should have been non finished yet"); } finally { response.release(); } } }
response.release(); out.clear(); removeThisHandler(ctx);
@Override public void close() { this.response.release(); this.context.close(); } }
@Override public boolean release(int decrement) { return response.release(decrement); }
@Override public boolean release(int decrement) { return response.release(decrement); }
@Override public boolean release() { return response.release(); }
@Override public boolean release(int decrement) { return response.release(decrement); }
@Override public boolean release() { return response.release(); }
@Override public boolean release() { return response.release(); }
@Override public boolean release() { return response.release(); }
@Override public boolean release(int decrement) { return response.release(decrement); }
@Override public void close() { this.nettyResponse.release(); this.context.close(); }
@Override public void close() { this.response.release(); this.context.close(); } }
@Override public void close() { this.nettyResponse.release(); this.context.close(); }
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (!(msg instanceof FullHttpResponse)) { ctx.fireChannelRead(msg); return; } FullHttpResponse response = (FullHttpResponse) msg; try { if (!handshaker.isHandshakeComplete()) { handshaker.finishHandshake(ctx.channel(), response); ctx.fireUserEventTriggered( WebSocketClientProtocolHandler.ClientHandshakeStateEvent.HANDSHAKE_COMPLETE); ctx.pipeline().remove(this); return; } throw new IllegalStateException("WebSocketClientHandshaker should have been non finished yet"); } finally { response.release(); } } }
@Override public boolean delete(Object key) { DefaultHttpRequest delete = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.DELETE, keyToUri(key)); try { HttpResponseHandler handler = new HttpResponseHandler(true); Channel ch = bootstrap.connect(configuration.host(), configuration.port()).awaitUninterruptibly().channel().pipeline().addLast(new HttpObjectAggregator(maxContentLength), handler).channel(); ch.writeAndFlush(delete).sync().channel().closeFuture().sync(); try { return isSuccessful(handler.getResponse().status().code()); } finally { handler.getResponse().release(); } } catch (Exception e) { throw new PersistenceException(e); } }
@Override public boolean test(Throwable throwable) { if (throwable instanceof RedirectClientException) { RedirectClientException re = (RedirectClientException) throwable; redirect(re.location); HttpResponse response = re.message(); if (response instanceof FullHttpResponse) { ((FullHttpResponse) response).release(); } return true; } if (AbortedException.isConnectionReset(throwable) && !retried) { retried = true; redirect(activeURI.toString()); return true; } return false; } }