@Override @SuppressWarnings("deprecation") public void onReadInactivity(Runnable runnable, long inactivityDuration) { this.inbound.withConnection(conn -> conn.onReadIdle(inactivityDuration, runnable)); }
@Override @SuppressWarnings("deprecation") public void onReadInactivity(Runnable runnable, long inactivityDuration) { this.inbound.withConnection(conn -> conn.onReadIdle(inactivityDuration, runnable)); }
@Override @SuppressWarnings("deprecation") public void onReadInactivity(Runnable runnable, long inactivityDuration) { this.inbound.withConnection(conn -> conn.onReadIdle(inactivityDuration, runnable)); }
@Override @SuppressWarnings("deprecation") public void onReadInactivity(Runnable runnable, long inactivityDuration) { this.inbound.withConnection(conn -> conn.onReadIdle(inactivityDuration, runnable)); }
@Test public void onReadIdleReplaces() { EmbeddedChannel channel = new EmbeddedChannel(); Connection mockContext = () -> channel; AtomicLong idle1 = new AtomicLong(); AtomicLong idle2 = new AtomicLong(); mockContext.onReadIdle(100, idle1::incrementAndGet); mockContext.onReadIdle(150, idle2::incrementAndGet); ReactorNetty.InboundIdleStateHandler idleStateHandler = (ReactorNetty.InboundIdleStateHandler) channel.pipeline().get(NettyPipeline.OnChannelReadIdle); idleStateHandler.onReadIdle.run(); assertThat(channel.pipeline().names()).isEqualTo(Arrays.asList( NettyPipeline.OnChannelReadIdle, "DefaultChannelPipeline$TailContext#0")); assertThat(idle1.intValue()).isEqualTo(0); assertThat(idle2.intValue()).isEqualTo(1); }
@Test @Ignore public void readIdleDoesNotFireWhileDataIsBeingRead() throws InterruptedException, IOException { final CountDownLatch latch = new CountDownLatch(1); long start = System.currentTimeMillis(); TcpClient client = TcpClient.create() .port(heartbeatServerPort); Connection s = client.handle((in, out) -> { in.withConnection(c -> c.onReadIdle(500, latch::countDown)); return Flux.never(); }) .wiretap(true) .connectNow(); assertTrue(latch.await(15, TimeUnit.SECONDS)); heartbeatServer.close(); long duration = System.currentTimeMillis() - start; assertThat(duration, is(greaterThanOrEqualTo(500L))); s.disposeNow(); }