ToolTalk ユーザーズガイド

メッセージの検査

ユーザープロセスがメッセージを受信する場合、ユーザーはメッセージを検査して適切な処置を行います。

値の検索を開始する前に ToolTalk API スタック上のマークを取得し、ToolTalk サービスがユーザーに同時に返す情報を解放できるようにします。例 11–3 では、記憶領域を割り当て、メッセージの内容を検査し、記憶領域を解放します。


例 11–3 記憶領域の割り当て、検査、および解放

        /*
         * Get a storage mark so we can easily free all the data
         * ToolTalk returns to us.
         */

        mark = tt_mark();

        if (0==strcmp(“ttsample1_value”, tt_message_op(msg_in))) {
                tt_message_arg_ival(msg_in, 0, &val_in);
                xv_set(gauge, PANEL_VALUE, val_in, NULL);
        }

        tt_message_destroy(msg_in);
        tt_release(mark);
        return;


表 11–1 に、受信したメッセージの属性を検査するためにユーザーが使用する ToolTalk 関数を示します。

表 11–1 メッセージ属性を検査する関数

返される型 

ToolTalk 関数 

説明 

Tt_address

tt_message_address(Tt_message m)

メッセージのアドレス 

Tt_status

tt_message_arg_bval(Tt_message m, int n, unsigned char **value, int *len)

バイト配列としての引数値 

Tt_status

tt_message_arg_ival(Tt_message m, int n, int *value)

整数としての引数値 

Tt_status

tt_message_arg_xval(Tt_message m, int n, xdrproc_t xdr_proc, void *value)

xdr としての引数値 

Tt_mode

tt_message_arg_mode(Tt_message m, int n)

引数のモード (入力、出力、入出力) 

char *

tt_message_arg_type(Tt_message m, int n)

引数の型 

char *

tt_message_arg_val(Tt_message m, int n)

文字列としての引数値 

int

tt_message_args_count(Tt_message m)

引数の数 

Tt_class

tt_message_class(Tt_message m)

メッセージの型 (通知または要求) 

int

tt_message_contexts_count(Tt_message m);

コンテキストの数 

char *

tt_message_context_slotname(Tt_message m, int n);

メッセージの「n 番目」のコンテキスト名 

Tt_disposition

tt_message_disposition(Tt_message m)

メッセージを受信するアプリケーションが動作していない場合のメッセージの処理方法 

char *

tt_message_file(Tt_message m)

メッセージの配信範囲指定となるファイル名 

gid_t

tt_message_gid(Tt_message m)

送信側アプリケーションのグループ化した識別子 

char *

tt_message_handler(Tt_message m)

ハンドラの procid 

char *

tt_message_handler_ptype(Tt_message m)

ハンドラの ptype 

char *

tt_message_object(Tt_message m)

メッセージが送られたオブジェクト 

char *

tt_message_op(Tt_message m)

操作名 

int

tt_message_opnum(Tt_message m)

操作番号 

char *

tt_message_otype(Tt_message m)

メッセージが送られたオブジェクトタイプ 

Tt_pattern

tt_message_pattern(Tt_message m)

メッセージが照合されるパターン 

Tt_scope

tt_message_scope(Tt_message m)

メッセージの受信側 (FILE、SESSION、BOTH) 

char *

tt_message_sender(Tt_message m)

送信側アプリケーションの procid 

char *

tt_message_sender_ptype(Tt_message m)

送信側アプリケーションの ptype 

char *

tt_message_session(Tt_message m)

メッセージを送信したセッション 

Tt_state

tt_message_state(Tt_message m)

メッセージの現在の状態 

int

tt_message_status(Tt_message m)

メッセージの現在の状態 

char *

tt_message_status_string(Tt_message m)

メッセージの現在の状態を記述するテキスト 

uid_t

tt_message_uid(Tt_message m)

送信側アプリケーションのユーザー識別子 

void *

tt_message_user(Tt_message m, int key)

アプリケーション内部の隠されたデータ