io.reactivex.netty.channel.ObservableConnection Java Examples
The following examples show how to use
io.reactivex.netty.channel.ObservableConnection.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: HelloUdpServer.java From ribbon with Apache License 2.0 | 6 votes |
public UdpServer<DatagramPacket, DatagramPacket> createServer() { UdpServer<DatagramPacket, DatagramPacket> server = RxNetty.createUdpServer(port, new ConnectionHandler<DatagramPacket, DatagramPacket>() { @Override public Observable<Void> handle(final ObservableConnection<DatagramPacket, DatagramPacket> newConnection) { return newConnection.getInput().flatMap(new Func1<DatagramPacket, Observable<Void>>() { @Override public Observable<Void> call(final DatagramPacket received) { return Observable.interval(delay, TimeUnit.MILLISECONDS).take(1).flatMap(new Func1<Long, Observable<Void>>() { @Override public Observable<Void> call(Long aLong) { InetSocketAddress sender = received.sender(); System.out.println("Received datagram. Sender: " + sender); ByteBuf data = newConnection.getChannel().alloc().buffer(WELCOME_MSG_BYTES.length); data.writeBytes(WELCOME_MSG_BYTES); return newConnection.writeAndFlush(new DatagramPacket(data, sender)); } }); } }); } }); System.out.println("UDP hello server started at port: " + port); return server; }
Example #2
Source File: MyUDPClient.java From ribbon with Apache License 2.0 | 6 votes |
public Observable<DatagramPacket> submit(final String content) { return LoadBalancerCommand.<DatagramPacket>builder() .withLoadBalancerContext(lbContext) .build() .submit(new ServerOperation<DatagramPacket>() { @Override public Observable<DatagramPacket> call(Server server) { RxClient<DatagramPacket, DatagramPacket> rxClient = getOrCreateRxClient(server); return rxClient.connect().flatMap(new Func1<ObservableConnection<DatagramPacket, DatagramPacket>, Observable<? extends DatagramPacket>>() { @Override public Observable<? extends DatagramPacket> call(ObservableConnection<DatagramPacket, DatagramPacket> connection) { connection.writeStringAndFlush(content); return connection.getInput().timeout(10, TimeUnit.MILLISECONDS).take(1); } }); } }); }
Example #3
Source File: KaryonTcpModuleTest.java From karyon with Apache License 2.0 | 6 votes |
@Test public void testGovernatedTcpServer() throws Exception { String message = RxNetty.createTcpClient("localhost", server.getServerPort()).connect() .flatMap(new Func1<ObservableConnection<ByteBuf, ByteBuf>, Observable<String>>() { @Override public Observable<String> call(ObservableConnection<ByteBuf, ByteBuf> connection) { return connection.getInput().map(new Func1<ByteBuf, String>() { @Override public String call(ByteBuf byteBuf) { return byteBuf.toString(Charset.defaultCharset()); } }); } }).single().toBlocking().toFuture().get(60, TimeUnit.SECONDS); assertEquals("Invalid message received from server", SERVER_MESSAGE, message); }
Example #4
Source File: KaryonWebSocketsModuleTest.java From karyon with Apache License 2.0 | 6 votes |
@Test public void testGovernatedTcpServer() throws Exception { String message = RxNetty.<TextWebSocketFrame, TextWebSocketFrame>newWebSocketClientBuilder("localhost", server.getServerPort()) .build() .connect() .flatMap(new Func1<ObservableConnection<TextWebSocketFrame, TextWebSocketFrame>, Observable<String>>() { @Override public Observable<String> call(ObservableConnection<TextWebSocketFrame, TextWebSocketFrame> connection) { return connection.getInput().map(new Func1<TextWebSocketFrame, String>() { @Override public String call(TextWebSocketFrame frame) { return frame.text(); } }); } }).single().toBlocking().toFuture().get(60, TimeUnit.SECONDS); assertEquals("Invalid message received from server", SERVER_MESSAGE, message); }
Example #5
Source File: ShutdownListener.java From karyon with Apache License 2.0 | 6 votes |
@Override public Observable<Void> handle(final ObservableConnection<String, String> conn) { return conn.getInput().take(1) /*Take only one command per connection*/ .doOnNext(new Action1<String>() { @Override public void call(String s) { logger.info("Received a command: " + s); } }) .flatMap(commandHandler) .doOnCompleted(new Action0() { @Override public void call() { try { shutdown(); } catch (InterruptedException e) { logger.error("Interrupted while shutting down the shutdown command listener."); } } }); }
Example #6
Source File: TcpPipelineHandlers.java From karyon with Apache License 2.0 | 6 votes |
@Override public Observable<Void> handle(final ObservableConnection<ByteBuf, ByteBuf> connection) { System.out.println("New frontend connection"); return connection.getInput().flatMap(new Func1<ByteBuf, Observable<Void>>() { @Override public Observable<Void> call(ByteBuf byteBuf) { String message = byteBuf.toString(Charset.defaultCharset()); System.out.println("Received: " + message); queueProvider.put(message); ByteBuf output = connection.getAllocator().buffer(); output.writeBytes("Want some more:\n".getBytes()); return connection.writeAndFlush(output); } }); }
Example #7
Source File: TcpPipelineHandlers.java From karyon with Apache License 2.0 | 6 votes |
@Override public Observable<Void> handle(final ObservableConnection<ByteBuf, ByteBuf> connection) { System.out.println("New backend connection"); return Observable.interval(1, TimeUnit.SECONDS).flatMap(new Func1<Long, Observable<Void>>() { @Override public Observable<Void> call(Long tick) { while (!queueProvider.isEmpty()) { ByteBuf output = connection.getAllocator().buffer(); output.writeBytes(queueProvider.poll().getBytes()); connection.write(output); } return connection.flush(); } }); }
Example #8
Source File: LoadBalancingRxClient.java From ribbon with Apache License 2.0 | 5 votes |
@Override public Observable<ObservableConnection<O, I>> connect() { return LoadBalancerCommand.<ObservableConnection<O, I>>builder() .withLoadBalancerContext(lbContext) .build() .submit(new ServerOperation<ObservableConnection<O, I>>() { @Override public Observable<ObservableConnection<O, I>> call(Server server) { return getOrCreateRxClient(server).connect(); } }); }
Example #9
Source File: UdpClientTest.java From ribbon with Apache License 2.0 | 5 votes |
@Test public void testUdpClientWithoutTimeout() throws Exception { int port = choosePort(); UdpServer<DatagramPacket, DatagramPacket> server = new HelloUdpServer(port, 0).createServer(); server.start(); BaseLoadBalancer lb = new BaseLoadBalancer(); lb.setServersList(Lists.newArrayList(new Server("localhost", port))); RxClient<DatagramPacket, DatagramPacket> client = RibbonTransport.newUdpClient(lb, DefaultClientConfigImpl.getClientConfigWithDefaultValues()); try { String response = client.connect().flatMap(new Func1<ObservableConnection<DatagramPacket, DatagramPacket>, Observable<DatagramPacket>>() { @Override public Observable<DatagramPacket> call(ObservableConnection<DatagramPacket, DatagramPacket> connection) { connection.writeStringAndFlush("Is there anybody out there?"); return connection.getInput(); } }).take(1) .map(new Func1<DatagramPacket, String>() { @Override public String call(DatagramPacket datagramPacket) { return datagramPacket.content().toString(Charset.defaultCharset()); } }) .toBlocking() .first(); assertEquals(HelloUdpServer.WELCOME_MSG, response); } finally { server.shutdown(); } }
Example #10
Source File: HelloUdpServerExternalResource.java From ribbon with Apache License 2.0 | 5 votes |
public void start() { int port; try { port = choosePort(); } catch (SocketException e) { throw new RuntimeException("Error choosing point", e); } server = RxNetty.createUdpServer(port, new ConnectionHandler<DatagramPacket, DatagramPacket>() { @Override public Observable<Void> handle(final ObservableConnection<DatagramPacket, DatagramPacket> newConnection) { return newConnection.getInput().flatMap(new Func1<DatagramPacket, Observable<Void>>() { @Override public Observable<Void> call(final DatagramPacket received) { return Observable.interval(timeout, TimeUnit.MILLISECONDS).take(1).flatMap(new Func1<Long, Observable<Void>>() { @Override public Observable<Void> call(Long aLong) { InetSocketAddress sender = received.sender(); LOG.info("Received datagram. Sender: " + sender); ByteBuf data = newConnection.getChannel().alloc().buffer(WELCOME_MSG_BYTES.length); data.writeBytes(WELCOME_MSG_BYTES); return newConnection.writeAndFlush(new DatagramPacket(data, sender)); } }); } }); } }); server.start(); LOG.info("UDP hello server started at port: " + port); }
Example #11
Source File: WebSocketEchoServer.java From karyon with Apache License 2.0 | 5 votes |
public static void main(final String[] args) { RxServer<TextWebSocketFrame, TextWebSocketFrame> webSocketServer = RxNetty.newWebSocketServerBuilder( 8888, new ConnectionHandler<TextWebSocketFrame, TextWebSocketFrame>() { @Override public Observable<Void> handle(final ObservableConnection<TextWebSocketFrame, TextWebSocketFrame> connection) { return connection.getInput().flatMap(new Func1<WebSocketFrame, Observable<Void>>() { @Override public Observable<Void> call(WebSocketFrame wsFrame) { TextWebSocketFrame textFrame = (TextWebSocketFrame) wsFrame; System.out.println("Got message: " + textFrame.text()); return connection.writeAndFlush(new TextWebSocketFrame(textFrame.text().toUpperCase())); } }); } } ).build(); Karyon.forWebSocketServer( webSocketServer, new KaryonBootstrapModule(), new ArchaiusBootstrapModule("websocket-echo-server"), // KaryonEurekaModule.asBootstrapModule(), /* Uncomment if you need eureka */ Karyon.toBootstrapModule(KaryonWebAdminModule.class), ShutdownModule.asBootstrapModule(), KaryonServoModule.asBootstrapModule()) .startAndWaitTillShutdown(); }
Example #12
Source File: KaryonTcpModuleTest.java From karyon with Apache License 2.0 | 4 votes |
@Override public Observable<Void> handle(ObservableConnection<String, String> connection) { return connection.writeAndFlush(SERVER_MESSAGE); }
Example #13
Source File: KaryonWebSocketsModuleTest.java From karyon with Apache License 2.0 | 4 votes |
@Override public Observable<Void> handle(ObservableConnection<TextWebSocketFrame, TextWebSocketFrame> newConnection) { return newConnection.writeAndFlush(new TextWebSocketFrame(SERVER_MESSAGE)); }