EventLoopGroup createEventLoop(IOMode mode, int numThreads, String threadPrefix) { switch (mode) { case NIO : return new NioEventLoopGroup(numThreads, threadFactory); case EPOLL : return new EpollEventLoopGroup(numThreads, threadFactory); } } Class<? extends Channel> getClientChannelClass(IOMode mode) { switch (mode) { case NIO : return NioSocketChannel. class ; case EPOLL : return EpollSocketChannel. class ; } } Class<? extends ServerChannel> getServerChannelClass(IOMode mode) { switch (mode) { case NIO : return NioServerSocketChannel. class ; case EPOLL : return EpollServerSocketChannel. class ; } } //构造pipelet responseHandler = new TransportResponseHandler(channel); TransportClient client = new TransportClient(channel, responseHandler); requestHandler = new TransportRequestHandler(channel, client,rpcHandler); channelHandler = new TransportChannelHandler(client, responseHandler, requestHandler, conf.connectionTimeoutMs(), closeIdleConnections); channel.pipeline() .addLast( "encoder" , encoder) .addLast(TransportFrameDecoder.HANDLER _ NAME, NettyUtils.createFrameDecoder()) .addLast( "decoder" , decoder) .addLast( "idleStateHandler" , new IdleStateHandler()) .addLast( "handler" , channelHandler); |