TCPポートをリッスンするためにaceアクセプターを使用しています。私のクラスはMy_Svc_Handlerから継承し、クラスMy_Svc_Handlerの関数int open(void *)を意味します。私が見たすべての例で、open関数内で、それらはリアクターを登録します。
ACE_Reactor::instance()->register_handler(this,
ACE_Event_Handler::READ_MASK);
なぜ登録する必要があるのか理解できません。私はすでにイベントを待っているリアクターを持っています。これは私がメインで定義したものです:
typedef ACE_Acceptor<My_Svc_Handler,ACE_LSOCK_ACCEPTOR> MyAcceptor;
int main(int argc, char* argv[]){
ACE_UNIX_Addr addr("/tmp/addr.ace");
MyAcceptor acceptor(address, ACE_Reactor::instance());
while(1) /* Start the reactors event loop */
ACE_Reactor::instance()->handle_events();
}
open関数がいつ呼び出されるのかわかりません。
その方法について別の質問があります。while(1)を実行しないメインに別の方法はありますか?