ToolTalk ユーザーズガイド

セッションを配信範囲とするメッセージフロー

セッションを配信範囲とするメッセージの基本的なフローは、次のとおりです。

  1. クライアントが要求メッセージを作成し、tt_message_send を呼び出します。

  2. ttsession がハンドラを見つけます。

    ttsession はハンドラを起動する際に、環境変数 TT_TOKEN を設定します。

  3. ハンドラが動作を開始し、tt_opentt_fd を呼び出して、ttsession への通信を確立します。

  4. ハンドラは自分の ptype を ttsession に宣言します。

  5. ttsession は ptype の静的パターンをすべて動的パターンに変更します。

    この時点では、ハンドラがまだセッションに参加していないため、そのパターンは無効です。

  6. ハンドラがセッションに参加して、パターンが有効になります。

  7. ttsession は、メッセージが待ち行列に入っていることをハンドラに通知します。

  8. ハンドラはファイル記述子で通知を受け、tt_message_receive を呼び出してそのメッセージを検索します。

    tt_message_receive が返したメッセージ状態が TT_WRN_START_MESSAGE の場合、ToolTalk サービスはすでにそのプロセスを起動してメッセージを配信済みです。この場合 ptype 用のメッセージは、プロセスがメッセージ (通知の場合でも) に対して応答、拒否、異常終了のいずれかの処理を行うか、tt_message_accept を呼び出すまでブロックされます。

  9. ハンドラは要求された操作を実行します。

  10. ハンドラは要求に対する応答を返します。

  11. ttsession は、(応答) メッセージが待ち行列に入っていることをクライアントに通知します。

    クライアントのファイル記述子が有効になります。


    注 -

    実際には、要求メッセージの状態が変化するたびに、クライアントはメッセージを受信します。


  12. クライアントは tt_message_receive を呼び出し、結果を検索します。