通常、ToolTalk サービスを使用して通信するアプリケーションには共通点があります。アプリケーションが同じセッションで実行されていたり、同じファイルまたはデータを対象としていたりします。アプリケーションは、処理の対象を登録するために、ToolTalk サービスにセッションまたはファイル (あるいはその両方) を結合します。ファイル情報とセッション情報は、メッセージパターンが指定された ToolTalk サービスが、メッセージを受信するアプリケーションを判定するために使用します。
配信範囲属性機能を使用できるのは、NFS ファイルシステムと UFS ファイルシステムだけです。tmpfs ファイルシステムでは、ファイルへの配信範囲は指定できません。
メッセージをファイルに配信範囲指定した場合は、そのファイルを結合している (かつ残りの属性に一致している) アプリケーションだけがメッセージを受信します。1 つのファイルを処理の対象として共有するアプリケーションは、同じセッションで実行している必要はありません。
メッセージがファイル配信範囲であることをパターンに指定する際、使用できる型を表 8-2 に示します。
表 8-2 メッセージのファイル配信範囲をパターンに指定する際の型
配信範囲の型 |
説明 |
---|---|
|
指定したファイルだけを配信範囲とする。同時にセッション属性も設定すればセッション中のファイルと同様な配信範囲を指定できるが、配信範囲が |
|
処理の対象となるファイルとセッションの「論理和」を配信範囲とする。ファイル、セッション、またはその両方を配信範囲とするメッセージに一致するのは、この配信範囲を指定したパターンだけである |
|
処理の対象となるファイルとセッションの「論理積」を配信範囲とする。ファイルとセッションを同時に配信範囲とするメッセージにだけ一致するのは、この配信範囲を指定したパターンだけである |
TT_FILE_IN_SESSION
と TT_SESSION
の論理和を配信範囲に指定するには、例 8-1 のように両方の配信範囲を同じパターンに追加します。
TT_FILE_IN_SESSION
と TT_SESSION
の論理和を配信範囲に指定する場合
メッセージのファイル配信範囲の型も、パターンと同じです。この型を表 8-3 に示します。
表 8-3 メッセージ用の配信範囲
メッセージの配信範囲が TT_FILE
または TT_BOTH
の場合は、ToolTalk クライアントライブラリが、そのファイルを処理対象とするクライアントのセッションをデータベースサーバーからすべて探し出し、それらの
ToolTalk セッションにメッセージを送信します。ToolTalk セッションは、その後でメッセージとクライアントを照合します。メッセージの送信側は、tt_file_join を明示的に呼び出す必要はありません。
配信範囲が TT_FILE_IN_SESSION
または TT_SESSION
のメッセージにファイルを指定しても、ToolTalk
データベースサーバーには連絡されず、メッセージは指定したセッション配信範囲のクライアントにしか送信されません。
メッセージをセッションに配信範囲指定した場合は、そのセッションに接続しているアプリケーションだけが受信可能側であると見なされます。
Tt_message m= tt_message_create(); tt_message_scope_set(m, TT_SESSION); tt_message_file_set(m, file); |
最初の行でメッセージを作成しています。2 行目ではメッセージの配信範囲を追加し、3 行目ではメッセージの範囲に影響を与えないファイル属性を追加しています。
アプリケーションは、メッセージ配信範囲として TT_FILE_IN_SESSION を指定することによって、メッセージ配布の範囲をかなり限定できます。指定したファイルとセッションの両方を結合しているアプリケーションだけが受信可能側であると見なされます。
また、アプリケーションは、メッセージのセッションを処理対象として登録しているすべてのクライアントを、TT_SESSION と tt_message_file_set を指定することによって、メッセージの配信範囲とすることもできます。パターンが一致するクライアントがメッセージを受信した場合、その受信側クライアントは tt_message_file を呼び出すことによってファイル名を取得できます。
Tt_message m= tt_message_create(); tt_message_scope_set(m, TT_FILE_IN_SESSION); tt_message_file_set(m, file); |
最初の行でメッセージを作成しています。2 行目ではメッセージの配信範囲を追加し、3 行目ではメッセージ配信範囲にファイルを追加しています。