一.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();