一 简介
一个用来初始化 channel的辅助类。
这个类用来提供通用的数据结构 为了其子类 ,子类用来通过用通用的数据结构实际的初始化 channel 和他们的子 channel 。
请参考clientBootstrap ,ServerBootstrap 和ConnectionlessBootstrap 来初始化 客户端 服务端和udp服务端。
二 属性:
private volatile ChannelFactory factory;
private volatile ChannelPipeline pipeline = Channels.pipeline();
private volatile ChannelPipelineFactory pipelineFactory = pipelineFactory(pipeline);
private volatile Map<String, Object> options = new HashMap<String, Object>();
三 方法
1. Bootstrap()
没有设置 channelFactory 创建实例。 所以setFactory 比如在 任何IO操作之前调用。
2. Bootstrap(ChannelFactory channelFactory)
创建一个 新的实例 ,使用 特定的初始 ChannelFactory
3. ChannelFactory getFactory()
如果没有 设置 ChannelFactory 则抛出异常 IllegalStateException("factory is not set yet.")
4.void setFactory(ChannelFactory factory)
5.ChannelPipeline getPipeline()
返回默认的, 当一个 新的channel创建时clone出来的ChannelPipeline实例。
bootstrap 会 创建一个新的 pipeline ,其和 为一个新channel返回的pipeline有相同的入口
注意: 这个方法是一个便利的方法,仅仅用于下面两种情况
a.仅当你要为这个bootstrap创建仅仅一个channel (例如一次就一个客户端连接或者udp通道)
b.所有的handler都是无状态的
一般情况下,你必须用 setPipelineFactory 方法创建
a.你的pipleline包含有状态的channelHandler
b。bootstrap会创建一个或多个channel
6.void setPipeline(ChannelPipeline pipeline)
注意事项:同 getPipeline, 一般建议还是用 setPipelineFactory 方法
7.Map<String, ChannelHandler> getPipelineAsMap()
通过order map返回 channelhandler
注意事项 同上 ,也就是说尽量不要对返回的 map中的channel进行更改
8.void setPipelineAsMap(Map<String, ChannelHandler> pipelineMap)
设置 pipelineMap ,注意事项,尽量不要用这个方式 而要用 setPipelineFactory 方法
注意事项 同上
9. ChannelPipelineFactory getPipelineFactory()
10 void setPipelineFactory(ChannelPipelineFactory pipelineFactory)
设置 ChannelPipelineFactory 。
调用这个方法的时候当前 bootstrap的 pipeline 属性将无效,然后后面接着调用 getPipeline 和 getPipelineAsMap 将报异常
11 Map<String, Object> getOptions()
12 setOptions(Map<String, Object> options)
如果 option中的某个 tuple是 原来的 option中已有的,则会覆盖原来的配置
13 void releaseExternalResources()
调用 ChannelFactory 的 releaseExternalResources 方法
14 boolean isOrderedMap(Map<?, ?> map)
用于 setPipelineAsMap 方法 校验map是否是 orderedMaptraa