本文主要介绍Bootstrap模型在整个Netty底层中的处理逻辑。
概述地讲,ServerBootstrap用于引导ServerChannel,Bootstrap用于引导Channel,使它们更容易被客户端使用。
Netty客户端代码样例。
Netty服务端代码样例。
注:标*的方法是Bootstrap与ServerBootstrap两者都有的。
用于引导Channel为客户端更容易地使用。
第二个构造器中参数为Bootstrap,表示可以复用其他Bootstrap,将其相关参数赋予给新的Bootstrap。
为channelFactory属性赋值为ReflectiveChannelFactory。
ReflectiveChannelFactory通过调用Channel的无参构造器方法创建Channel实例。
对应样例的代码,也就是创建NioSocketChannel实例。
要求channelHandler、group、channelFactory属性不为空。
深拷贝Bootstrap。
为Channel指定参数。
为Channel指定属性。
指定处理器。
将ChannelHandler添加到ChannelPipeline中。设置channel的参数和属性。
创建channel。
初始化channel。
注册channel。
直接连接远端。
解析地址并连接远端。
使用channel连接远端。(这里不再分析,在channel的文章中会解析)
ServerChannel的引导类。与Bootstrap的作用类似。
(注:下面仅仅列举与Bootstrap不同的方法。)
指定group、childGroup属性。
设置用于子channel的childOptions属性。
设置用于子channel的childAttrs属性。
设置用于子channel的childHandler属性。
要求group、channelFactory、childHandler、childGroup属性不为空。
深拷贝ServerBootstrap。
在channelPipeline中添加handler以及一个ServerBootstrapAcceptor实例。
在pipeline中添加childHandler。设置childOptions、childAttrs。
此外,添加一个监听器。用于操作完成时,关闭子channel。
定时调度设置autoRead为true。
触发异常捕获事件。
创建channel。
初始化channel。
注册channel。
使用channel进行绑定。(这里不再分析,在channel的文章中再进行分析)