ユーザーのプロセスが要求 (class=TT_REQUEST) を受信した場合、ユーザーは要求に応答するか、要求を拒否するか、または要求を異常終了するかのどれかを選択しなければなりません。
要求に応答する場合は次の操作が必要です。
要求された操作を実行します。
任意の引数に TT_OUT または TT_INOUT のモードを埋め込みます。
メッセージに対して応答を送信します。
表 11-2 に、要求への応答時に使用する ToolTalk 関数を示します。
表 11-2 要求に応答するための関数
ToolTalk 関数 |
説明 |
---|---|
tt_message_arg_mode(Tt_message m, int n) |
引数のモード (入力、出力、入出力)。返される型は Tt_mode |
tt_message_arg_bval_set(Tt_message m, int n, const unsigned char *value, int len) |
指定されたバイト配列に引数の値を設定する。返される型は Tt_status |
tt_message_arg_ival_set(Tt_message m, int n, int value) |
指定された整数に引数の値を設定する。返される型は Tt_status |
tt_message_arg_val_set(Tt_message m, int n, const char *value) |
指定された文字列に引数の値を設定する。返される型は Tt_status |
tt_message_arg_xval_set(Tt_message m, int n, xdrproc_t xdr_proc, void *value) |
返される型は Tt_status |
tt_message_context_set(Tt_message m, const char *slotname, const char *value); |
指定された文字列にコンテキストを設定する。返される型は Tt_status |
tt_message_bcontext_set(Tt_message m, const char *slotname, unsigned char *value, int length); |
指定されたバイト配列にコンテキストを設定する。返される型は Tt_status |
tt_message_icontext_set(Tt_message m, const char *slotname, int value); |
指定された整数にコンテキストを設定する。返される型は Tt_status |
tt_message_xcontext_set(Tt_message m, const char *slotname, xdrproc_t xdr_proc, void *value) |
返される型は Tt_status |
tt_message_reply(Tt_message m) |
メッセージに応答する。返される型は Tt_status |
要求の検査後、ユーザーのアプリケーションが現在その要求を処理できない場合は、表 11-3 に一覧表示された ToolTalk 関数を使って、要求を拒否または異常終了できます。
表 11-3 要求の拒否または異常終了
ToolTalk 関数 |
説明 |
---|---|
tt_message_reject(Tt_message m) |
メッセージを拒否する |
tt_message_fail(Tt_message m) |
メッセージを異常終了する |
tt_message_status_set(Tt_message m, int status) |
メッセージの状態を設定する。受信側アプリケーションは、この状態を見ることができる |
tt_message_status_string_set(Tt_message m, const char *status_str) |
メッセージの状態を記述するテキストを設定する。受信側アプリケーションは、このテキストを見ることができる |
これらの要求の返される型は Tt_status です。
要求の検査後、ユーザーのアプリケーションが現在その要求を処理できないが別のアプリケーションを使えば処理できる場合は、tt_message_reject を使ってその要求を拒否します。
ユーザーが要求を拒否すると、ToolTalk サービスはその要求を処理するための別の受信側を見つけようとします。ToolTalk サービスは、現在実行中のハンドラを発見できない場合、処置属性を検査し、メッセージを待ち行列に入れるか、適切なメッセージパターンが入った ptype でアプリケーションを起動しようとします。
要求の検査後、ユーザーまたはユーザーと同じ ptype の他のプロセスが要求された操作を実行できない場合は、tt_message_fail を使って、その操作が実行できないことを ToolTalk サービスに知らせます。ToolTalk サービスは、要求が異常終了したことを送信側に知らせます。
送信側に要求が異常終了した理由を知らせるには、tt_message_fail を呼び出す前に、tt_message_status_set または tt_message_status_string_set を使用します。
tt_message_status_set によってユーザーが指定した状態コードは、TT_ERR_LAST
より大きくなければなりません。