ACE之处理器仓库分析

简介

ACE针对不同的io复用机制,在处理eventhandler时,实现了不同的handler管理

Handler_Repository

ACE_Dev_Poll_Reactor内部定义的类,用于管理epoll或者devpoll的handler

1
1..n
Handler_Repository
- int size_
- int max_size_
- Event_Tuple *handlers_
+int open(size_t size)
+int close(void)
+Event_Tuple *find(ACE_HANDLE handle)
+int bind(ACE_HANDLE handle,ACE_Event_Handler *handler,ACE_Reactor_Mask mask)
+int unbind(ACE_HANDLE handle, bool decr_refcnt = true)
+int unbind_all(void)
+bool invalid_handle(ACE_HANDLE handle)
+bool handle_in_range(ACE_HANDLE handle)
+size_t size(void)
+size_t max_size(void)
Event_Tuple
+ ACE_Event_Handler *event_handler
+ ACE_Reactor_Mask mask
+ bool suspended
+ bool controlled

Event_Tuple:用来表示单个EventHandler的信息,即关注事件以及事件处理器,事件是否被挂起,以及事件是否注册到epoll中
Handler_Repository:用来管理所有的EventHandler,包含这个容器中的最大容量以及当前管理的EventHandler的个数
open:设置仓库的最大容量,分配内存创建指定sizeEvent_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的仓库

ACE_Select_Reactor_Handler_Repository
- ACE_Select_Reactor_Impl &select_reactor_
- map_type event_handlers_
- ACE_HANDLE max_handlep1_
+int open(size_type size)
+int close(void)
+ACE_Event_Handler * find(ACE_HANDLE handle)
+int bind(ACE_HANDLE,ACE_Event_Handler *,ACE_Reactor_Mask)
+int unbind(ACE_HANDLE,ACE_Reactor_Mask mask)
+int unbind_all(void)
+bool invalid_handle(ACE_HANDLE handle)
+bool handle_in_range(ACE_HANDLE handle)
+size_type size(void)
+max_handlep1_type max_handlep1(void)

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仓库

ACE_WFMO_Reactor_Handler_Repository
# ACE_WFMO_Reactor &wfmo_reactor_
# size_t max_size_
# ACE_HANDLE *current_handles_
# Current_Info *current_info_
# DWORD max_handlep1_
# To_Be_Added_Info *to_be_added_info_
# size_t handles_to_be_added_
# Suspended_Info *current_suspended_info_
# size_t suspended_handles_
# size_t handles_to_be_suspended_
# size_t handles_to_be_resumed_
# size_t handles_to_be_deleted_
Common_Info
Current_Info
To_Be_Added_Info
Suspended_Info
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值