When your process receives a message, you examine the message and take appropriate action.
Before you start to retrieve values, obtain a mark on the ToolTalk API stack so that you can release the information the ToolTalk service returns to you all at once. Example 11-3 allocates storage, examines message contents, and releases the storage.
Table 11-1 lists the ToolTalk functions you use to examine the attributes of a message you have received.
Table 11-1 Functions to Examine Message Attributes
Return Type |
ToolTalk Function |
Description |
---|---|---|
Tt_address |
tt_message_address(Tt_message m) |
The address of the message. |
Tt_status |
tt_message_arg_bval(Tt_message m, int n, unsigned char **value, int *len) |
The argument value as a byte array. |
Tt_status |
tt_message_arg_ival(Tt_message m, int n, int *value) |
The argument value as an integer. |
Tt_status |
tt_message_arg_xval(Tt_message m, int n, xdrproc_t xdr_proc, void *value) |
The argument value as an xdr. |
Tt_mode |
tt_message_arg_mode(Tt_message m, int n) |
The argument mode (in, out, inout). |
char * |
tt_message_arg_type(Tt_message m, int n) |
The argument type. |
char * |
tt_message_arg_val(Tt_message m, int n) |
The argument value as a string. |
int |
tt_message_args_count(Tt_message m) |
The number of arguments. |
Tt_class |
tt_message_class(Tt_message m) |
The type of message (notice or request). |
int |
tt_message_contexts_count(Tt_message m); |
The number of contexts. |
char * |
tt_message_context_slotname(Tt_message m, int n); |
The name of a message's nth context. |
Tt_disposition |
tt_message_disposition(Tt_message m) |
How to handle the message if there is no receiving application running. |
char * |
tt_message_file(Tt_message m) |
The name of the file to which the message is scoped. |
gid_t |
tt_message_gid(Tt_message m) |
The group identifier of the sending application. |
char * |
tt_message_handler(Tt_message m) |
The procid of the handler. |
char * |
tt_message_handler_ptype(Tt_message m) |
The ptype of the handler. |
char * |
tt_message_object(Tt_message m) |
The object to which the message was sent. |
char * |
tt_message_op(Tt_message m) |
The operation name. |
int |
tt_message_opnum(Tt_message m) |
The operation number. |
char * |
tt_message_otype(Tt_message m) |
The object type to which the message was sent. |
Tt_pattern |
tt_message_pattern(Tt_message m) |
The pattern to which the message is to be matched. |
Tt_scope |
tt_message_scope(Tt_message m) |
Who is to receive the message (FILE, SESSION, BOTH) |
char * |
tt_message_sender(Tt_message m) |
The procid of the sending application. |
char * |
tt_message_sender_ptype(Tt_message m) |
The ptype of the sending application. |
char * |
tt_message_session(Tt_message m) |
The session from which the message was sent. |
Tt_state |
tt_message_state(Tt_message m) |
The current state of the message. |
int |
tt_message_status(Tt_message m) |
The current status of the message. |
char * |
tt_message_status_string(Tt_message m) |
Text describing the current status of the message. |
uid_t |
tt_message_uid(Tt_message m) |
The user identifier of the sending application. |
void * |
tt_message_user(Tt_message m, int key) |
Opaque data internal to the application. |