現在、処理の対象とするセッションまたはファイルによってメッセージパターンを更新するには、セッションまたはファイルを結合します。
セッションを結合するとき、ToolTalk サービスは、sessid によってメッセージパターンを更新します。たとえば、ptype を宣言する場合、あるいは TT_SESSION
または TT_FILE_IN_SESSION
を指定したメッセージパターンを登録する場合は、tt_session_join を使用してデフォルトセッションを結合します。次のコード例は、デフォルトセッションを結合する方法を示しています。
/* * Join the default session */ tt_session_join(tt_default_session()); |
表 9-2 は、処理の対象とするセッションを結合する場合に使用する ToolTalk 関数を示しています。
表 9-2 デフォルトセッションを結合するための ToolTalk 関数
返される型 |
ToolTalk 関数 |
機能 |
---|---|---|
char * |
tt_default_session(void) |
デフォルトセッションの ID を返す |
Tt_status |
tt_default_session_set(const char *sessid) |
デフォルトセッションを設定する |
char * |
tt_initial_session(void) |
初期セッションの ID を返す |
Tt_status |
tt_session_join(const char *sessid) |
このセッションを結合する |
Tt_status |
tt_session_quit(const char *sessid) |
セッションを終了する |
パターンが更新されてしまうと、結合したセッションを配信範囲としたメッセージを受信します。
あらかじめセッションを結合しており、ptype または新しいメッセージパターンを登録した場合、新しいパターンに一致するメッセージを受信するためには、再び同じセッションまたは新しいセッションを結合してパターンを更新しなければなりません。
デフォルトセッションを参照するメッセージを受信する必要がなくなった場合は、tt_session_quit() 関数を使用します。この関数は、セッションに配信範囲指定されたメッセージパターンから sessid を削除します。
複数のセッションを結合する場合、ユーザーは要求とポイントツーポイントメッセージに対する応答を自動的に受け取りますが、新しいセッションを明示的に結合しないかぎり通知を受け取ることはありません。次のコード例は、複数のセッションを結合する方法を示します。
tt_default_session_set(new_session_identifier); tt_open(); tt_session_join(new_session); |
複数のセッションを効果的に使用するには、ユーザーが、対象とするセッションのセッション ID を格納しなければなりません。このセッションは、tt_open を使用して新しいセッションを開始する前に、tt_default_session_set
にこれらの識別子を渡すためのものです。つまり、ユーザーは、システム上のファイルに値 (ttsession が環境変数 _SUN_TT_SESSION
に格納する値) を配置する必要があり、これによって他の
ToolTalk クライアントがそのファイルに含まれるセッション ID の値にアクセスでき、その値を使用して非デフォルトセッションを開始できます。たとえばユーザーは、セッション
ID を「明らかに認識されている」ファイルに格納し、その後ファイル範囲指定のメッセージ (このファイルを示す) を、適切なパターンを登録したすべてのクライアントへ送信できます。その場合クライアントは、配信先ファイルを開始する情報を得て、そこから
1 つ以上のセッション ID を読み取ります。そしてこれらのセッション ID (tt_open を伴う) を使用して、非デフォルトセッションを開始します。これに代わる方法としては、たとえば、ネームサービスまたは第三者データベースを使用してセッション
ID を通知するなどの手段があります。
ttsession セッション ID が、どのように格納されて対象とするクライアントに渡されるかは、ToolTalk プロトコルの範囲を越えており、システムのアーキテクチャに基づいて決定されなければなりません。
ファイルを結合する場合、ToolTalk サービスは、ファイルに配信範囲指定されたメッセージパターンにファイル名を自動的に追加します。たとえば、プロセス型を宣言する、あるいは TT_FILE
または TT_FILE_IN_SESSION
を指定したメッセージパターンを登録する場合、tt_file_join() 関数を使用して処理の対象とするファイルを結合します。表 9-3 は、特定の処理対象のファイルを示すために使用する ToolTalk 関数を示しています。
返される型 |
ToolTalk 関数 |
機能 |
---|---|---|
char * |
tt_default_file(void) |
デフォルトファイルを結合する |
Tt_status |
tt_default_file_set(const char *docid) |
デフォルトファイルを設定する |
Tt_status |
tt_file_join(const char *filepath) |
このファイルを結合する |
Tt_status |
tt_file_quit(const char *filepath) |
ファイルを終了する |
ファイルを参照するメッセージを受信する必要がなくなった場合、tt_file_quit() 関数を使用して、ファイルに配信範囲指定したメッセージパターンからファイル名を削除します。