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);
|