ACE学习简单记录

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

 

 

 

posted @ 2014-01-03 16:48  weixliu  阅读(1669)  评论(2编辑  收藏  举报