initAndRegister方法
主要有三个方法
channelFactory.newChannel方法
1)初始化NioServerSocketChannel,设置为非阻塞状态,保存了感兴趣的事件类型为accept;
2)创建服务端Channel的pipeline,但管道中只有HeadContext<——>TailContext;
3)创建服务端Channel的Unsafe对象,类型是NioMessageUnsafe对象;
init方法
向服务端pipeline中添加一个ChannelInitializer实例,并且加到另外一个链表中,为服务端channel向selector注册之后的回调(拆包,异步任务)做准备。
1)初始化服务端pipeline,向服务端管道中添加一个ChannelInitializer实例,形成HeadContext<——>ChannelInitializer<——>TailContext;另外addLast方法中还会将ChanneInitializer实例加入到PendingHandlerCallback链表中构成一个单向链表,当服务端Channel注册之后,会从该链表中取出CI实例执行initChannel方法。
2)ChannelInitializer实例中只有一个initChannel方法中,其包括两部分逻辑,即往服务端pipeline添加handler属性中保存的处理器和往bossGroup的nioEventLoop中提交异步任务2;调