Bootstrap 类 解析

本文深入探讨了一个用于初始化channel的辅助类的功能和用法,包括其关键属性、方法及其在初始化客户端、服务端和UDP服务端时的作用。重点解释了如何通过设置ChannelFactory、Pipeline和Options来定制channel的初始化过程。
摘要由CSDN通过智能技术生成

一 简介

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值