受信側は、要求された操作を完了すると、通常そのメッセージを削除します。しかし、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; } |