zoukankan      html  css  js  c++  java
  • nio/mina(五) 构架研究

    mina基于reactor模式

    参考文章:

    http://libo20475.blog.163.com/blog/static/27140009200981352836598/  apache mina 研究

    http://blog.csdn.net/gaolingep/article/details/4147697   mina研究-源代码

    http://developer.51cto.com/art/201103/248125_1.htm    解析mina代码

    http://lanmh.iteye.com/blog/1003933   mina工作流程

    http://www.doc88.com/p-239796971134.html  mina中文api

    mina构架

    IoService:

    这个接口抽象了一切io操作,包括建立端口监听,io读写,负责底层通信接入

    IoProcessor:

    1.为IOService处理正真的I/O读写操作。IOService在某端口监听,当发生int selected = select();时,说明有建立连接的客户端请求,IOService会调用IOProcessor,将session和交给processor处理。
    2.IOProcessor也会有一个int selected = select(1000);的阻塞,等待IO事件。
    3.当I/O事件到达后,会把输入读入到一个BUF中session.getChannel().read(buf.buf())(Java NIO)。

    IoFilter:

    1.上面IOProcessor得到buf后,会交给 IOFilter处理,如果是读取IO则触发messageReceived方法。
    2.IOFilter一般被包含在一个IoFilterChain中,是实现了责任链模式的一根链条。

    IoHandler:(业务处理)

    1.是拿到buf做处理的一个接口,是用户最终会面对的一个接口。
    2.上面的IOFilter得到buf(以接收数据为例),IOFilter调用了IoHandler的messageReceived(s, message);方法。

    主要接口

    IoAcceptor: 服务端,实现了IoService接口
    IoConnector: 客户端,实现了IoService接口
    IoProcessor:负责处理IoSession,包括创建,移除,读写事件的处理
    IoSession:  客户连接的抽象
    IoFilter:   过滤消息或者说(通讯层的)消息处理,IoService与IoHandler间的桥梁
    IoHandler:  消息处理

    基本流程

    1当IoService 实例创建的时候,同时一个关联在IoService 上的IoProcessor 池、线程池也被创建;
    2当IoService 建立套接字(IoAcceptor 的bind()或者是IoConnector 的connect()方法被调用)时,IoService 从线程池中取出一个线程,监听套接字端口;
    3当IoService 监听到套接字上有连接请求时,建立IoSession 对象,从IoProcessor池中取出一个IoProcessor 实例执行这个会话通道上的过滤器、IoHandler;
    4当这条IoSession 通道进入空闲状态或者关闭时,IoProcessor 被回收。

    http://blog.csdn.net/onafioo/article/details/7912059

    很详细,关于mina线程的使用

  • 相关阅读:
    iTestin云测试工具
    android 存储操作 大小显示换算 kb mb KB MB 读取
    android 发送短信 判断号码规则 判断字符数70
    android 震动 各种
    10.13总结
    10.8每日总结
    10.9
    10.15
    10.14
    10.12每日总结
  • 原文地址:https://www.cnblogs.com/nafio/p/9137758.html
Copyright © 2011-2022 走看看