2011-10-04 9 views
0

私は、TCPポートをリッスンするためにaceアクセプタを使用しています。 My_Svc_Handlerからmyクラスが除外され、クラスMy_Svc_Handlerの関数int open(void *)が暗示されます。ACEアクセプタ - My_Svc_Handlerクラス

ACE_Reactor::instance()->register_handler(this, 
    ACE_Event_Handler::READ_MASK); 

私たちはregistoreする必要がない理由understantいけない:私が見たすべての例で は、open関数の内部で、彼らは、原子炉を]レジスタ?私はすでにイベントを待っている反応炉を持っています。これは私がメインで定義しました:

私はオープン関数が呼び出されたときは分かりません。

私はそのような方法で別の質問があります。 while(1)を実行していないメインに別の方法がありますか?

答えて

0

UNIX/Linux上のACEでReactorのデフォルトの実装がSelect_Reactorで、名前として、この反応器は、データが利用可能なときにイベントを送出selectシステムコールを実行しているやっているすべてを意味するので、あなたが登録する必要がある理由は、ソケットに取り付けます。したがってselectにソケットをソケットのリストに追加するように指示しない限り、selectの読み取りまたは書き込み記述子リストReactorは、ソケットにデータが存在するときは何も行いません。

これはregister_handlerの対象です。

関連する問題