mina源码研究

mina源码研究

ID:36231841

大小:298.83 KB

页数:18页

时间:2019-05-07

mina源码研究_第1页
mina源码研究_第2页
mina源码研究_第3页
mina源码研究_第4页
mina源码研究_第5页
资源描述:

《mina源码研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Mina源码研究作者唐延波日期2014-11-09目录1.NioSocketAcceptor初始化源码研究21.1初始化NioSocketAcceptor31.2SimpleIoProcessorPool初始化分析51.3NioProcessor的源码71.4总结72.NioSocketAcceptorbind方法源码研究72.1bind方法72.2bind方法9Mina版本为2.091.NioSocketAcceptor初始化源码研究初始化服务端acceptor的代码如下:IoAcceptor acceptor = new NioSock

2、etAcceptor();那么它到底做了些什么呢,我们一起来看看源代码先贴出类图和类调用时序图,给大家看个大概:1.1类图1.1方法调用时序图1.2初始化NioSocketAcceptor调用构造方法代码如下:NioSocketAcceptor类publicNioSocketAcceptor(){super(newDefaultSocketSessionConfig(),NioProcessor.class);((DefaultSocketSessionConfig)getSessionConfig()).init(this);}注意参数N

3、ioProcessor.class,这将是后面processor池中对象的具体类型继续调用父类AbstractPollingIoAcceptor的构造方法代码编号1.2:protectedAbstractPollingIoAcceptor(IoSessionConfigsessionConfig,Class>processorClass){this(sessionConfig,null,newSimpleIoProcessorPool(processorClass),true,null);

4、}注意传参newSimpleIoProcessorPool(processorClass),processorClass实际是NioProcessor.class然后继续privateAbstractPollingIoAcceptor(IoSessionConfigsessionConfig,Executorexecutor,IoProcessorprocessor,booleancreatedProcessor,SelectorProviderselectorProvider){super(sessionConfig,exec

5、utor);if(processor==null){thrownewIllegalArgumentException("processor");}//代码编号1.3:赋值给processorthis.processor=processor;this.createdProcessor=createdProcessor;try{//Initializetheselector//代码编号1.4:初始化Selectorinit(selectorProvider);//Theselectorisnowready,wecanswitchthe//fla

6、gtotruesothatincomingconnectioncanbeacceptedselectable=true;}catch(RuntimeExceptione){throwe;}catch(Exceptione){thrownewRuntimeIoException("Failedtoinitialize.",e);}finally{if(!selectable){try{destroy();}catch(Exceptione){ExceptionMonitor.getInstance().exceptionCaught(e);}

7、}}}注释:1.代码编码1.3:赋值给AbstractPollingIoAcceptor的processor,其实际类型为SimpleIoProcessorPool那么接下来继续看代码编号1.4@Overrideprotectedvoidinit(SelectorProviderselectorProvider)throwsException{this.selectorProvider=selectorProvider;if(selectorProvider==null){selector=Selector.open();}else{sel

8、ector=selectorProvider.openSelector();}}这里初始化了selector,该selector用于注册客户端连接的事件那么我们再画一个类图,分别

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。