@Override public Mono<Closeable> start(ConnectionAcceptor acceptor) { Objects.requireNonNull(acceptor, "acceptor must not be null"); return Mono.create( sink -> { ServerDuplexConnectionAcceptor serverDuplexConnectionAcceptor = new ServerDuplexConnectionAcceptor(name, acceptor); if (registry.putIfAbsent(name, serverDuplexConnectionAcceptor) != null) { throw new IllegalStateException("name already registered: " + name); } sink.success(serverDuplexConnectionAcceptor); }); }
@Override public Mono<DuplexConnection> connect() { return Mono.defer( () -> { ServerDuplexConnectionAcceptor server = LocalServerTransport.findServer(name); if (server == null) { return Mono.error(new IllegalArgumentException("Could not find server: " + name)); } UnicastProcessor<Frame> in = UnicastProcessor.create(); UnicastProcessor<Frame> out = UnicastProcessor.create(); MonoProcessor<Void> closeNotifier = MonoProcessor.create(); server.accept(new LocalDuplexConnection(out, in, closeNotifier)); return Mono.just((DuplexConnection) new LocalDuplexConnection(in, out, closeNotifier)); }); } }
@Override public Mono<Closeable> start(ConnectionAcceptor acceptor) { Objects.requireNonNull(acceptor, "acceptor must not be null"); return Mono.create( sink -> { ServerDuplexConnectionAcceptor serverDuplexConnectionAcceptor = new ServerDuplexConnectionAcceptor(name, acceptor); if (registry.putIfAbsent(name, serverDuplexConnectionAcceptor) != null) { throw new IllegalStateException("name already registered: " + name); } sink.success(serverDuplexConnectionAcceptor); }); }
@Override public Mono<DuplexConnection> connect() { return Mono.defer( () -> { ServerDuplexConnectionAcceptor server = LocalServerTransport.findServer(name); if (server == null) { return Mono.error(new IllegalArgumentException("Could not find server: " + name)); } UnicastProcessor<Frame> in = UnicastProcessor.create(); UnicastProcessor<Frame> out = UnicastProcessor.create(); MonoProcessor<Void> closeNotifier = MonoProcessor.create(); server.accept(new LocalDuplexConnection(out, in, closeNotifier)); return Mono.just((DuplexConnection) new LocalDuplexConnection(in, out, closeNotifier)); }); } }