(ACE)学习Reactor反应器里事件处理器 ACE_Event_Handler
很容易知道ACE_Event_Handler 实现是采用的观察着模式 ,采用登记入 反应器, 是反应器的一个组件。就好像java 的窗体事件监听处理机制。 ====================================================================
#include "ACE/Reactor.h" #include "ACE/Event_Handler.h" #define SIGWINCH 28 #define SIGINT 2 //按下control + c class MyEventHandler: public ACE_Event_Handler { int handle_signal(int signum,siginfo_t*,ucontext_t*) //处理信号 { switch(signum) { case SIGWINCH: ACE_DEBUG((LM_DEBUG,"You pressed SIGWINCH n")); break; case SIGINT: ACE_DEBUG((LM_DEBUG,"You pressed SIGINT n")); break; } return 0; } }; int main(int argc,char *argv[]) { MyEventHandler *eh =new MyEventHandler; ACE_Reactor::instance()->register_handler(SIGWINCH,eh); //注册信号1 ACE_Reactor::instance()->register_handler(SIGINT,eh); //注册信号2 while(1) ACE_Reactor::instance()->handle_events(); } ==========================================================
ACE_Event_Handler中在子类中重载,所处理事件的类型: 的处理方法 handle_signal() 信号。当任何在反应器上登记的信号发生时,反应器自动回调该 方法。 handle_input() 来自I/O设备的输入。当I/O句柄(比如UNIX中的文件描述符) 上的输入可用时,反应器自动回调该方法。 handle_exception() 异常事件。当已在反应器上登记的异常事件发生时(例如,如果 收到SIGURG(紧急信号)),反应器自动回调该方法。 handle_timeout() 定时器。当任何已登记的定时器超时的时候,反应器自动回调该 方法。 handle_output() I/O设备输出。当I/O设备的输出队列有可用空间时,反应器自动 回调该方法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |