@Override public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception { handler.channelWritabilityChanged(ctx); }
@Override public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception { assert ctx == inboundCtx.ctx; if (!inboundCtx.removed) { inboundHandler.channelWritabilityChanged(inboundCtx); } else { inboundCtx.fireChannelWritabilityChanged(); } }
@Override public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception { assert ctx == inboundCtx.ctx; if (!inboundCtx.removed) { inboundHandler.channelWritabilityChanged(inboundCtx); } else { inboundCtx.fireChannelWritabilityChanged(); } }
@Override public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception { assert ctx == inboundCtx.ctx; if (!inboundCtx.removed) { inboundHandler.channelWritabilityChanged(inboundCtx); } else { inboundCtx.fireChannelWritabilityChanged(); } }
private void invokeChannelWritabilityChanged() { if (invokeHandler()) { try { ((ChannelInboundHandler) handler()).channelWritabilityChanged(this); } catch (Throwable t) { notifyHandlerException(t); } } else { fireChannelWritabilityChanged(); } }
private void invokeChannelWritabilityChanged() { if (invokeHandler()) { try { ((ChannelInboundHandler) handler()).channelWritabilityChanged(this); } catch (Throwable t) { notifyHandlerException(t); } } else { fireChannelWritabilityChanged(); } }
private void invokeChannelWritabilityChanged() { if (invokeHandler()) { try { ((ChannelInboundHandler) handler()).channelWritabilityChanged(this); } catch (Throwable t) { notifyHandlerException(t); } } else { fireChannelWritabilityChanged(); } }
@Test public void shouldResumeWhenWritabilityChanged() throws Exception { TestThrottleLock lockOverride = new TestThrottleLock(); // given TransportThrottle throttle = newThrottleAndInstall( channel, lockOverride ); when( channel.isWritable() ).thenReturn( false ); Future<Void> completionFuture = otherThread.execute( state -> { throttle.acquire( channel ); return null; } ); otherThread.get().waitUntilWaiting(); // when when( channel.isWritable() ).thenReturn( true ); ArgumentCaptor<ChannelInboundHandler> captor = ArgumentCaptor.forClass( ChannelInboundHandler.class ); verify( channel.pipeline() ).addLast( captor.capture() ); captor.getValue().channelWritabilityChanged( context ); otherThread.get().awaitFuture( completionFuture ); assertThat( lockOverride.lockCallCount(), greaterThan( 0 ) ); assertThat( lockOverride.unlockCallCount(), is( 1 ) ); }
@Override public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception { assert ctx == inboundCtx.ctx; if (!inboundCtx.removed) { inboundHandler.channelWritabilityChanged(inboundCtx); } else { inboundCtx.fireChannelWritabilityChanged(); } }
@Override public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception { assert ctx == inboundCtx.ctx; if (!inboundCtx.removed) { inboundHandler.channelWritabilityChanged(inboundCtx); } else { inboundCtx.fireChannelWritabilityChanged(); } }
@Override public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception { assert ctx == inboundCtx.ctx; if (!inboundCtx.removed) { inboundHandler.channelWritabilityChanged(inboundCtx); } else { inboundCtx.fireChannelWritabilityChanged(); } }
private void invokeChannelWritabilityChanged() { if (invokeHandler()) { try { ((ChannelInboundHandler) handler()).channelWritabilityChanged(this); } catch (Throwable t) { notifyHandlerException(t); } } else { fireChannelWritabilityChanged(); } }
private void invokeChannelWritabilityChanged() { if (invokeHandler()) { try { ((ChannelInboundHandler) handler()).channelWritabilityChanged(this); } catch (Throwable t) { notifyHandlerException(t); } } else { fireChannelWritabilityChanged(); } }
private void invokeChannelWritabilityChanged() { if (invokeHandler()) { try { ((ChannelInboundHandler) handler()).channelWritabilityChanged(this); } catch (Throwable t) { notifyHandlerException(t); } } else { fireChannelWritabilityChanged(); } }