ToolTalk ユーザーズガイド

同一プロセス内でのメッセージの送受信

受信側は、要求された操作を完了すると、通常そのメッセージを削除します。しかし、ToolTalk サービスでは受信側にも要求側にも同じメッセージ ID を使用するため、同じプロセス内で送受信を行うと、要求側にあるメッセージも削除されてしまいます。

この対処方法の 1 つは、メッセージに参照カウントを付加することです。そのためには、tt_message_user[_set]() 関数を使用します。

もう 1 つの対処方法は、送信側が現在の procid でない場合だけ、受信側のメッセージを破棄することです。次に例を示します。


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;
}