ToolTalk ユーザーズガイド

アプリケーションにメッセージが到着するとどうなりますか

アプリケーションにメッセージが到着すると、次のようになります。

  1. ファイル記述子が有効になります。

  2. Xt メインループが select から抜け出し、XtAppAddInput 呼び出しで登録してある関数を呼び出します。

  3. この登録関数は、tt_message_receive を呼び出します。

    メッセージが読み込まれ、メッセージに関連付けられているコールバックがすべて起動されます。

  4. メッセージのコールバックから戻ります。

    • メッセージコールバックの戻り値が TT_CALLBACK_PROCESSED の場合、tt_message_receive は値として NULL を入力コールバックに返します。

    • メッセージコールバックの戻り値が TT_CALLBACK_CONTINUE の場合、メッセージの Tt_message ハンドルが返されます。

  5. 入力コールバックは他の処理を継続します。

たとえば、次のような入力コールバックに対して、

input_callback(...)
{
     Tt_message m;
     printf ("input callback entered\n");
     m = tt_message_receive();
     printf ("input callback exiting, message handle is %d\n",
             (int)m);
}

メッセージコールバックが次のようになっている場合、

message_callback(...)
{
     printf("message callback entered\n");
     return TT_CALLBACK_PROCESSED;
} 

次のように出力されます。

input callback entered
message callback entered
input callback exiting, message handle is 0