@Deprecated @Override public ChannelFuture register(Channel channel, ChannelPromise promise) { return next().register(channel, promise); } }
@Override public ChannelFuture register(Channel channel) { return next().register(channel); }
@Override public ChannelFuture register(ChannelPromise promise) { return next().register(promise); }
@Deprecated @Override public ChannelFuture register(Channel channel, ChannelPromise promise) { if (channel == null) { throw new NullPointerException("channel"); } try { return nextChild().register(channel, promise); } catch (Throwable t) { promise.setFailure(t); return promise; } }
@Override public ChannelFuture register(ChannelPromise promise) { try { return nextChild().register(promise); } catch (Throwable t) { promise.setFailure(t); return promise; } }
@Override public ChannelFuture register(Channel channel) { if (channel == null) { throw new NullPointerException("channel"); } try { EventLoop l = nextChild(); return l.register(new DefaultChannelPromise(channel, l)); } catch (Throwable t) { return new FailedChannelFuture(channel, GlobalEventExecutor.INSTANCE, t); } }
@Override final void onHttp2StreamStateChanged(ChannelHandlerContext ctx, Http2FrameStream stream) { Http2MultiplexCodecStream s = (Http2MultiplexCodecStream) stream; switch (stream.state()) { case HALF_CLOSED_REMOTE: case OPEN: if (s.channel != null) { // ignore if child channel was already created. break; } // fall-trough ChannelFuture future = ctx.channel().eventLoop().register(new DefaultHttp2StreamChannel(s, false)); if (future.isDone()) { registerDone(future); } else { future.addListener(CHILD_CHANNEL_REGISTRATION_LISTENER); } break; case CLOSED: DefaultHttp2StreamChannel channel = s.channel; if (channel != null) { channel.streamClosed(); } break; default: // ignore for now break; } }
public void open0(ChannelHandlerContext ctx, final Promise<Http2StreamChannel> promise) { assert ctx.executor().inEventLoop(); final Http2StreamChannel streamChannel = ((Http2MultiplexCodec) ctx.handler()).newOutboundStream(); try { init(streamChannel); } catch (Exception e) { streamChannel.unsafe().closeForcibly(); promise.setFailure(e); return; } ChannelFuture future = ctx.channel().eventLoop().register(streamChannel); future.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()) { promise.setSuccess(streamChannel); } else if (future.isCancelled()) { promise.cancel(false); } else { if (streamChannel.isRegistered()) { streamChannel.close(); } else { streamChannel.unsafe().closeForcibly(); } promise.setFailure(future.cause()); } } }); }