public void runOnCorrectThread(NioSocketChannel nch, Runnable runnable) { nch.getWorker().executeInIoThread(runnable, false); }
@Override public void executeInIoThread(Runnable runnable) { NioSocketChannel nioSocketChannel = (NioSocketChannel) getNettyChannel(); nioSocketChannel.getWorker().executeInIoThread(runnable, true); }
public NioSocketChannelIoSession(ChannelIoService service, IoProcessorEx<ChannelIoSession<? extends ChannelConfig>> processor, NioSocketChannel channel) { super(service, processor, channel, new NioSocketChannelIoSessionConfig(channel.getConfig()), currentThread(), asExecutor(channel.getWorker())); }
@Override public void childChannelOpen(ChannelHandlerContext ctx, ChildChannelStateEvent e) throws Exception { NioSocketChannel childChannel = (NioSocketChannel) e.getChildChannel(); DistributedNioWorker worker = (DistributedNioWorker) childChannel.getWorker(); worker.childChannelOpen(childChannel); super.childChannelOpen(ctx, e); }
@Override public void operationComplete(ChannelFuture future) throws Exception { ((NioSocketChannel) ctx.getChannel()).getWorker().executeInIoThread(() -> { try { prepareReceived(ctx, evt); } catch (Exception e) { sendErrorMessage(ctx, e); } }, true); } });
@Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) { final NioSocketChannel ch = (NioSocketChannel) e.getChannel(); NioWorker worker = ch.getWorker(); //Choose a handler final HandlerHolder<NetSocket> handler = handlerManager.chooseHandler(worker); if (handler == null) { //Ignore return; } if (tcpHelper.isSSL()) { SslHandler sslHandler = (SslHandler)ch.getPipeline().get("ssl"); ChannelFuture fut = sslHandler.handshake(); fut.addListener(new ChannelFutureListener() { public void operationComplete(ChannelFuture channelFuture) throws Exception { if (channelFuture.isSuccess()) { connected(ch, handler); } else { log.error("Client from origin " + ch.getRemoteAddress() + " failed to connect over ssl"); } } }); } else { connected(ch, handler); } }
HandlerHolder<ServerWebSocket> wsHandler = wsHandlerManager.chooseHandler(ch.getWorker()); if (wsHandler == null || firstHandler == wsHandler) { break; HandlerHolder<HttpServerRequest> reqHandler = reqHandlerManager.chooseHandler(ch.getWorker()); if (reqHandler != null) { conn = new ServerConnection(vertx, ch, reqHandler.context);