/** * Starts to accept connections on local address. * * @return mono transport */ public Mono<Transport> bind0() { return newTcpServer() .handle(this::onMessage) .bind() .doOnSuccess( server -> LOGGER.debug("Bound cluster transport on {}:{}", server.host(), server.port())) .doOnError( ex -> LOGGER.error( "Failed to bind cluster transport on port={}, cause: {}", config.getPort(), ex.toString())) .map(this::onBind); }
@Test(timeout = 2000) public void startAndAwait() throws InterruptedException { AtomicReference<DisposableServer> conn = new AtomicReference<>(); CountDownLatch startLatch = new CountDownLatch(1); Thread t = new Thread(() -> TcpServer.create() .handle((in, out) -> out.sendString(Mono.just("foo"))) .bindUntilJavaShutdown(Duration.ofMillis(200), c -> { conn.set(c); startLatch.countDown(); })); t.start(); //let the server initialize startLatch.await(); //check nothing happens for 200ms t.join(200); Assertions.assertThat(t.isAlive()).isTrue(); //check that stopping the bnc stops the server conn.get().disposeNow(); t.join(); Assertions.assertThat(t.isAlive()).isFalse(); }
.handle((in, out) -> out.send(in.receive() .asString() .map(jsonDecoder)
DisposableServer server = TcpServer.create().host("localhost") .handle((in, out) -> out.sendGroups(in.receive() .asString() .map(jsonDecoder)
DisposableServer simpleServer = TcpServer.create() .handle((in, out) -> out .options(NettyPipeline.SendOptions::flushOnEach) .sendString(
.handle((in, out) -> in.withConnection(c -> c.addHandler(new JsonObjectDecoder())) .receive() .asString()
@Test public void testIssue462() throws InterruptedException { final CountDownLatch countDownLatch = new CountDownLatch(1); DisposableServer server = TcpServer.create() .port(0) .handle((in, out) -> { in.receive() .log("channel") .subscribe(trip -> countDownLatch.countDown()); return Flux.never(); }) .wiretap(true) .bindNow(); assertNotNull(server); System.out.println("PORT +" + server.address() .getPort()); Connection client = TcpClient.create() .port(server.address() .getPort()) .handle((in, out) -> out.sendString(Flux.just("test"))) .wiretap(true) .connectNow(); assertNotNull(client); client.disposeNow(); server.disposeNow(); assertThat("Latch was counted down", countDownLatch.await(5, TimeUnit.SECONDS)); }
.handle((in, out) -> { try { in.receive()
@Test public void prematureCancel() { DirectProcessor<Void> signal = DirectProcessor.create(); DisposableServer x = TcpServer.create() .host("localhost") .port(0) .handle((in, out) -> { signal.onComplete(); return out.withConnection(c -> c.addHandlerFirst(new HttpResponseEncoder())) .sendObject(Mono.delay(Duration.ofSeconds(2)) .map(t -> new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.PROCESSING))) .neverComplete(); }) .wiretap(true) .bindNow(Duration.ofSeconds(30)); StepVerifier.create( createHttpClientForContextWithAddress(x) .get() .uri("/") .responseContent() .timeout(signal)) .verifyError(TimeoutException.class); }
DisposableServer connectedServer = server.handle((in, out) -> { in.receive() .asByteArray()
@Test public void exposesRemoteAddress() throws InterruptedException { final int port = SocketUtils.findAvailableTcpPort(); final CountDownLatch latch = new CountDownLatch(1); DisposableServer server = TcpServer.create() .port(port) .handle((in, out) -> { in.withConnection(c -> { InetSocketAddress addr = c.address(); assertNotNull("remote address is not null", addr.getAddress()); latch.countDown(); }); return Flux.never(); }) .wiretap(true) .bindNow(); assertNotNull(server); Connection client = TcpClient.create().port(port) .handle((in, out) -> out.sendString(Flux.just("Hello World!"))) .wiretap(true) .connectNow(); assertNotNull(client); assertTrue("Latch was counted down", latch.await(5, TimeUnit.SECONDS)); client.disposeNow(); server.disposeNow(); }
.doOnConnection(c -> c.addHandlerLast("codec", new LineBasedFrameDecoder(256))) .handle((in, out) -> out.options(o -> o.flushOnEach(false)) .sendString(in.receive()
TcpServer.create() .secure(spec -> spec.sslContext(sslServer)) .handle((in, out) -> in.receive() .asString()
TcpServer.create() .port(0) .handle((in, out) -> in.receive() .take(1)
private void assertSendFile(Function<NettyOutbound, NettyOutbound> fn) { DisposableServer context = TcpServer.create() .handle((in, out) -> in.receive() .asString()
.port(port); DisposableServer connected = server.handle(serverHandler) .wiretap(true) .bindNow();
.host("localhost") .port(0) .handle((in, out) -> out.withConnection(c -> c.addHandlerFirst(new HttpResponseEncoder())) .sendObject(Flux.just(response(), response()))