简介
ACE针对不同的io复用机制,在处理eventhandler时,实现了不同的handler管理
Handler_Repository
是ACE_Dev_Poll_Reactor
内部定义的类,用于管理epoll或者devpoll的handler
Event_Tuple
:用来表示单个EventHandler的信息,即关注事件以及事件处理器,事件是否被挂起,以及事件是否注册到epoll中
Handler_Repository
:用来管理所有的EventHandler,包含这个容器中的最大容量以及当前管理的EventHandler的个数
open
:设置仓库的最大容量,分配内存创建指定size
个Event_Tuple
close
:遍历handlers_
,执行EventHandler的handle_close
,释放内存handlers_
find
:获取仓库中句柄对应的Event_Tuple
bind
:创建Event_Tuple
添加到仓库中
unbind
:从仓库中创建句柄对应的Event_Tuple
unbind_all
:清空仓库
ACE_Select_Reactor_Handler_Repository
是select io复用即ACE_Select_Reactor_Impl
用于管理handler的仓库
map_type
:window平台下是ACE_Hash_Map_Manager_Ex
,其它平台是ACE_Array_Base<ACE_Event_Handler *>
bind
:在添加时,如果绑定过,但是handler不一致,则不添加直接返回,根据情况看是否添加到select_reactor_
中的suspend_set_
还是wait_set_
ACE_WFMO_Reactor_Handler_Repository
是window平台wfmo io复用的handler仓库