ユーザープロセスがメッセージを受信する場合、ユーザーはメッセージを検査して適切な処置を行います。
値の検索を開始する前に ToolTalk API スタック上のマークを取得し、ToolTalk サービスがユーザーに同時に返す情報を解放できるようにします。例 11-3 では、記憶領域を割り当て、メッセージの内容を検査し、記憶領域を解放します。
表 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) |
アプリケーション内部の隠されたデータ |