简介
Proactor使用的是异步io,其实现与Reactor相似,也使用桥接模式
ACE_Proactor 对ACE_Proactor_Impl
ACE_Asynch_Operation对ACE_Asynch_Operation_Impl
ACE_Asynch_Result对ACE_Asynch_Result_Impl
组成
ACE_Handler
异步的处理类
ACE_Service_Handler
:在ACE_Handler
基础上添加了open
方法,子类继承ACE_Service_Handler
主要是向Proactor注册
ACE_Asynch_Result
异步处理结果
ACE_Asynch_Result_Impl
:增加了complete
和post_completion
,在具体操作执行时,创建对应的结果对象,将操作中的Handler和handle传到结果中
ACE_Asynch_Operation
异步操作
ACE_Asynch_Operation_Impl
异步操作实现抽象类的子类
ACE_Asynch_Read_Stream_Impl
:在基类基础上添加了read
和readv
ACE_Asynch_Write_Stream_Impl
:在基类基础上添加了write
和writev
ACE_Asynch_Read_File_Impl
:在ACE_Asynch_Read_Stream_Impl
基础上添加了read
和readv
ACE_Asynch_Write_File_Impl
:在ACE_Asynch_Write_Stream_Impl
基础上添加了write
和writev
ACE_Asynch_Accept_Impl
:在基类基础上添加了accept
ACE_Asynch_Connect_Impl
:在基类基础上添加了connect
ACE_Asynch_Transmit_File_Impl
:在基类基础上添加了transmit_file
ACE_Asynch_Read_Dgram_Impl
:在基类基础上添加了recv
ACE_Asynch_Write_Dgram_Impl
:在基类基础上添加了send
ACE_Asynch_Result_Impl
ACE_Asynch_Read_Stream_Result_Impl
:增加了bytes_to_read
,message_block
,handle
ACE_Asynch_Write_Stream_Result_Impl
:增加了bytes_to_write
,message_block
,handle
ACE_Asynch_Accept_Result_Impl
:增加了bytes_to_read
,message_block
, listen_handle
,accept_handle
ACE_Asynch_Connect_Result_Impl
:增加了connect_handle
ACE_Asynch_Transmit_File_Result_Impl
:增加了socket
,file
,header_and_trailer
,bytes_to_write
,bytes_per_send
和flags
ACE_Asynch_Read_Dgram_Result_Impl
:增加了message_block
,bytes_to_read
,remote_address
,flags
和handle
ACE_Asynch_Write_Dgram_Result_Impl
:增加了message_block
,bytes_to_write
,flags
和handle
ACE_Proactor_Impl的实现类
异步类
异步操作子类
异步结果类
win32异步操作实现类子类
ACE_WIN32_Asynch_Operation
:包含了处理器,所属的Proactor以及对应的句柄,在发起操作时,会创建ACE_WIN32_Asynch_Result
,同时将处理器传入
win32异步结果实现类子类
Posix异步操作实现类子类
ACE_POSIX_Asynch_Operation
:包含了处理器,所属的Proactor以及对应的句柄,在发起操作时,会创建ACE_POSIX_Asynch_Result
,同时将处理器传入
Posix异步结果实现类子类
时序
使用的是Handler,其调用时序为
Acceptor-Connector框架
Acceptor的时序为
以window平台的为例
Connector的时序为
以window平台的为例