ACE学習簡易記録

1857 ワード

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