汎用関数 tt_message_create ( ) を使用して、ToolTalk メッセージを作成し完成できます。tt_message_create ( ) を使用してプロセス指向またはオブジェクト指向のメッセージを作成する場合は、tt_message_attribute_set ( ) 呼び出しを使用して属性を設定します。
値または状態を返すメッセージ用には、TT_REQUEST
を使用します。メッセージが処理された場合、メッセージが待ち行列に入れられた場合、または要求を処理するプロセスを起動した場合には通知されます。
イベントの他のプロセスに通知するだけのメッセージ用には、TT_NOTICE
を使用します。
メッセージの受信者としていくつかのタイプを予想して、それらの中の受信者、拒絶者、忌避者の割合を知りたい場合は、TT_OFFER
を使用します。
TT_PROCEDURE
を使用して、これらの引数を使用してこの操作を実行できるすべてのプロセスにメッセージを送信します。このメッセージの操作属性と引数属性を書き込みます。
TT_OTYPE
を使用して、これらの引数を使用してこの操作を実行できるオブジェクト型にメッセージを送信します。このメッセージの
otype 属性、操作属性、および引数属性を書き込みます。
TT_HANDLER
を使用して、特定のプロセスにメッセージを送信します。ハンドラ属性の値を指定します。
通常、1 つのプロセスは一般的な要求を作成し、応答からハンドラ属性を選択し、そのハンドラに追加のメッセージを送信します。ハンドラの正確な procid を指定した場合、ToolTalk サービスはメッセージを直接配信します。この場合、パターン照合は行われず、他のアプリケーションがメッセージを監視できません。このポイントツーポイント (PTP) のメッセージ渡し機能によって、2 つのプロセスがブロードキャストメッセージを渡すことによって認識し合い、明示的な通信を実行できます。
オファは、TT_PROCEDURE
アドレスでのみ送信可能です。それ以外のアドレスで送信しようとすると、TT_ERR_ADDRESS
エラーとなります。
TT_OBJECT
を使用して、これらの引数を使用して操作を実行する特定のオブジェクトにメッセージを送信します。このメッセージのオブジェクト属性、操作属性、および引数属性を書き込みます。
メッセージ配信の配信範囲を書き込みます。受信可能側は、次の値に結合できます。
TT_SESSION
TT_FILE
TT_BOTH
TT_FILE_IN_SESSION
ToolTalk サービスは、配信範囲に応じてデフォルトのセッションまたはファイル、あるいはその両方をメッセージに追加します。
オファは、TT_SESSION
の配信範囲でのみ送信可能です。
作成中の通知または要求について記述した操作を書き込みます。操作名を判定するには、ターゲットとなる受信側の ptype 定義またはメッセージプロトコル定義を参照します。
操作に固有の引数を書き込みます。引数のデータ型に最も適した関数を使用します。
tt_message_arg_add ( )
値がゼロ終了文字列の引数を追加します。
tt_message_barg_add ( )
値がバイト文字列の引数を追加します。
tt_message_iarg_add ( )
値が整数の引数を追加します。
追加する引数ごとに、次の値を指定します (値の型には関係ありません)。
Tt_mode
TT_IN
または TT_INOUT
を指定します。TT_IN
は、送信側が引数を書き込み、ハンドラおよびオブザーバがこの引数を読み取れることを示します。TT_INOUT
は、送信側とハンドラが引数を書き込み、誰でも引数を読み取れることを示します。応答としてハンドラからの引数を必要とする要求を送信する場合は、TT_INOUT
を使用します。
値の型
値の型 (vtype) は、追加する引数のデータ型について説明します。ToolTalk サービスは、登録済みのパターンとメッセージを比較してメッセージの受信側を判定する際に vtype 名を使用します。しかし、メッセージまたはパターンの引数の値を処理する際には vtype を使用しません。
vtype 名は、メッセージの受信側がデータを解釈するのに役立ちます。たとえば、ワードプロセッサがメモリ内のパラグラフを PostScript 表現に変換した場合は、tt_message_arg_add に次の引数を付けて呼び出すことができます。
tt_message_arg_add (m, “PostScript”, buf);
この場合 ToolTalk サービスは、ゼロ終了文字列を指す buf を想定し送信します。
同様に、アプリケーションは、ToolTalk メッセージで enum 値 (たとえば、次のような Tt_status の要素) を送信します。
tt_message_iarg_add(m, “Tt_status”, (int) TT_OK);
ToolTalk サービスは、値を整数として送信します。ただし、Tt_status という vtype は、値が何を意味するかを受信側に示します。
特に送信側と受信側で特定の vtype 名を定義し、受信側が他の形式で格納された値を検索できないようにしなければなりません。たとえば、整数として格納した値が、文字列として検索されないようにしなければなりません。