博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bootstrap 类 解析
阅读量:5894 次
发布时间:2019-06-19

本文共 2000 字,大约阅读时间需要 6 分钟。

  hot3.png

一 简介

      一个用来初始化 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

   

   

转载于:https://my.oschina.net/dyaod/blog/483970

你可能感兴趣的文章
POI导出JavaWeb中的table到excel下载
查看>>
RAID 磁盘陈列详解
查看>>
公司组网核心、汇聚、接入层交换机配置
查看>>
linux文件描述符
查看>>
C++ const 详解
查看>>
wpf 自动完成comboxBox
查看>>
传值引用和调用引用的区别
查看>>
Linux & Oracle目录说明
查看>>
Hive简介
查看>>
hyper-v 无线网连接
查看>>
Python3.7.1学习(六)RabbitMQ在Windows环境下的安装
查看>>
Windows下memcached的安装配置
查看>>
ubuntu: firefox+flashplay
查看>>
常见的海量数据处理方法
查看>>
Microsoft Windows 8.1 使用记录
查看>>
C语言博客作业03--函数
查看>>
web.xml 中CharacterEncodingFilter类的学习
查看>>
显示刚刚添加的最后一条数据,access,选择语句,select
查看>>
贪吃蛇逻辑代码
查看>>
实现c协程
查看>>