MINA研究-源代码

第一部分:mina各层的关系

图1.1

说明

  1. IOService:
    1. 这个接口抽象了一切I/O操作,包括建立端口监听、I/O读写,
  2. 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)
  3. IOFilter:
    1. 上面IOProcessor得到buf后,会交给 IOFilter处理,如果是读取IO则触发 messageReceived方法。
    2. IOFilter一般被包含在一个IoFilterChain中,顾名思义,当然是实现了责任链模式的一根链条咯。
  4. IoHandler
    1. 是拿到buf做处理的一个接口,是用户最终会面对的一个接口。
    2. 上面的IOFilter得到buf(以接收数据为例),IOFilter调用了 IoHandlermessageReceived(s, message);方法。

最后还要提一个接口:

IoSession

A handle which represents connection between two end-points regardless of

transport types.

实际上这个接口是一个会话服务,或者它更像是一个大容器。后面我们还会讲到它。

 

第二部分:类图

2.1 IOService

  1. IoAcceptor接口:

服务器端接口,接受客户端访问的请求

  1. AbstractIoService

    设定处理函数、Filter、IoServiceListener

    1. 处理函数是一个 Executor或者是Executor的包装。
    2. IoServiceListener可以用于打印日志,主要有Service启动、停止、空闲等监听方法
  2. AbstractIoAcceptor完成绑定监听端口
  3. AbstractPollingIoAcceptor执行具体的监听连接以及监听I/O事件
  4. NioSocketAcceptor用JAVA NIO的方式实现了具体的连接方法 ServerSocketChannel,例如openaccept

 

2.2IoProcessor

显然,这个结构实现了组成模式

SimpleIoProcessorPool内有一个数组,包装了IoProcessor。这个SimpleIoProcessorPool的DEFAULT_SIZE属性,定义了开多少个IoProcessor

前面讲过IoProcessor为IOService处理正真的I/O读写操作。(在nio下,一个IoProcessor可以在单线程中处理多个连接请求和io事件)除此之外,再开多个IoProcessor,一个IoProcessor启动一个线程。

 

2.3 IoSession

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值