ToolTalk ユーザーズガイド

要求の処理

ユーザーのプロセスが要求 (class=TT_REQUEST) を受信した場合、ユーザーは要求に応答するか、要求を拒否するか、または要求を異常終了するかのどれかを選択しなければなりません。

要求への応答

要求に応答する場合は次の操作が必要です。

  1. 要求された操作を実行します。

  2. 任意の引数に TT_OUT または TT_INOUT のモードを埋め込みます。

  3. メッセージに対して応答を送信します。

    表 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 より大きくなければなりません。