ToolTalk User's Guide

Sending and Receiving Messages in the Same Process

Normally, the receiver deletes the message when it has completed the requested operation. However, the ToolTalk service uses the same message ID for both the receiver and the requestor. When sending and receiving messages in the same process, these features cause the message underneath the requestor to be deleted as well.

One workaround is to put a refcount on the message. To do this, use the tt_message_user[_set]() function.

Another workaround is to destroy the message in the receiver only if the sender is not the current procid; for example:

Tt_callback_action
my_pattern_callback(Tt_message m, Tt_pattern p)
{
	/* normal message processing goes here */

	if (0!=strcmp(tt_message_sender(m),tt_default_procid()) {
		tt_message_destroy(m);
	}
	return TT_CALLBACK_PROCESSED;
}