一.ACE_Reactor的使用方法
1.创建ACE_Event_Handler的派生类。
class MyHandler : public ACE_Event_Handler { public: MyHandler( // ... ) :ACE_Event_Handler() { // ... } // ... }
2.重写一个可以被ACE_Reactor调用的方法。
int handle_timeout ( const ACE_Time_Value ¤t_time,const void * = 0) { // ... } // or int handle_signal ( int signum, siginfo_t * = 0, ucontext_t * = 0 ) { // ... } // or int handle_input( ACE_HANDLE fd = ACE_INVALID_HANDLE) { // ... } // or
3.实例化一个自定义的派生类,通常发生在main()函数中。
MyHandler * handler = new MyHandler();
4.关联自定义的handler和Reactor。
ACE_Time_Value initialDelay(3); ACE_Time_Value interval(5); ACE_Reactor::instance()->schedule_timer( handler, 0, initialDelay, interval); // or ACE_Sig_Set signalSet(1); ACE_Reactor::instance()->register_handler(signalSet, handler); // or ACE_Reactor::instance()->register_handler(handler, ACE_Event_Handler::READ_MASK); // or
5.启动Reactor即可
ACE_Reactor::instance()->run_reactor_event_loop();