ACE_Reactor模式减轻了程序员对底层网络IO事件监视的负担,一般情况下程序员只要继承ACE_Event_Handler类,重写相关的接口处理函数,然后向ACE_Reactor的对象注册相关事件即可,事件的定义在ACE_Event_Handler类中有相关定义,我用的最多是ACCEPT_MASK、READ_MASK、WRITE_MASK。
不同的事件调用不同的接口。相关的类图如下:
一般情况下使用ACE_Reactor模式需要如下步骤:
1、继承ACE_Event_Handler,并重写感兴趣的接口函数,如handle_input,handle_output,handle_close等
2、生成ACE_Reactor实例,一般是一个线程一个,注意ACE_Reactor默认情况下不支持多线程,我经常通过instance函数获取唯一实例
3、生成第一步的事件处理对象实例,根据情况看是否使用new申请内存
4、通过ACE_Reactord的register_handle接口注册相关事件,相关事件的定义在ACE_Event_Handler类中有定义,我一般使用ACCEPT_MASK,READ_MASK,WRITE_MASK