ToolTalk User's Guide

Examining Messages

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.


Example 11-3 Allocating, Examining, and Releasing Storage

        /*
         * 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;


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.