@Override public TcpConnection<IN, OUT> consume(final Consumer<IN> consumer) { eventsReactor.on(read.getT1(), new Consumer<Event<IN>>() { @Override public void accept(Event<IN> ev) { consumer.accept(ev.getData()); } }); return this; }
@SuppressWarnings("unchecked") @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { if (Tuple2.class.isInstance(msg)) { Tuple2<Object, Boolean> tup = (Tuple2<Object, Boolean>) msg; if (null != tup.getT1()) { super.write(ctx, tup.getT1(), promise); } if (tup.getT2()) { ctx.flush(); } } else { super.write(ctx, msg, promise); ctx.flush(); } } }
protected <U> Composable(@Nullable Observable observable, @Nullable Composable<U> parent, @Nullable Tuple2<Selector, Object> acceptSelectorTuple, @Nullable Environment environment) { Assert.state(observable != null || parent != null, "One of 'observable' or 'parent' cannot be null."); this.parent = parent; this.environment = environment; this.events = parent == null ? observable : parent.events; if (null == acceptSelectorTuple) { this.acceptSelector = Selectors.anonymous(); this.acceptKey = acceptSelector.getObject(); } else { this.acceptKey = acceptSelectorTuple.getT1(); this.acceptSelector = new ObjectSelector<Object>(acceptSelectorTuple.getT2()); } }
protected TcpServer(@Nonnull Environment env, @Nonnull Reactor reactor, @Nullable InetSocketAddress listenAddress, ServerSocketOptions options, SslOptions sslOptions, @Nullable Codec<Buffer, IN, OUT> codec, @Nonnull Collection<Consumer<TcpConnection<IN, OUT>>> connectionConsumers) { Assert.notNull(env, "A TcpServer cannot be created without a properly-configured Environment."); Assert.notNull(reactor, "A TcpServer cannot be created without a properly-configured Reactor."); this.env = env; this.reactor = reactor; this.codec = codec; Assert.notNull(connectionConsumers, "Connection Consumers cannot be null."); for (final Consumer<TcpConnection<IN, OUT>> consumer : connectionConsumers) { this.reactor.on(open.getT1(), new Consumer<Event<TcpConnection<IN, OUT>>>() { @Override public void accept(Event<TcpConnection<IN, OUT>> ev) { consumer.accept(ev.getData()); } }); } }
/** * Notify this server's consumers that the server has started. * * @param started An optional callback to invoke. */ protected void notifyStart(@Nullable final Consumer<Void> started) { if (null != started) { reactor.on(start.getT1(), new Consumer<Event<Void>>() { @Override public void accept(Event<Void> ev) { started.accept(null); } }); } reactor.notify(start.getT2(), selfEvent); }
connectAddress = tup.getT1(); bootstrap.remoteAddress(connectAddress); long delay = tup.getT2();
@Override public Promise<IN> sendAndReceive(OUT data) { final Deferred<IN, Promise<IN>> d = Promises.defer(env, eventsReactor.getDispatcher()); Tuple2<Selector, Object> tup = $(); eventsReactor.on(tup.getT1(), new EventConsumer<IN>(d)).cancelAfterUse(); replyToKeys.add(tup.getT2()); send(data, null); return d.compose(); }