パターンが一致してメッセージが到着した際、ToolTalk サービスにコールバックを起動するよう指示できます。
p = tt_pattern_create(); tt_pattern_op_add(p, "EDIT"); ... other pattern attributes tt_pattern_callback_add(p, do_edit_message); tt_pattern_register(p); |
コールバックは、登録したときと逆の順序で呼び出されます (つまり、最後に追加したコールバックが最初に呼び出されます)。
新しいメッセージを検索するために tt_message_receive を呼び出した場合、ToolTalk サービスがメッセージとパターンコールバックをどのように起動するかを図 11-1に示します。
ToolTalk サービスは、ハンドラにアドレス指定されたメッセージの受信側を判別後、その受信側が登録したすべてのパターンに対してそのメッセージを照合します。(明示的にハンドラにアドレス指定されたメッセージは「ポイントツーポイント」のメッセージであるため、パターンの照合は行いません。)
メッセージがパターンに一致しなかった場合、そのメッセージは通常の方法で配信されます。
メッセージがパターンに一致した場合、そのパターンに付加されているコールバックがすべて起動されます。
静的パターンを作成する際、数値タグ (opnum) を ptype の各シグニチャに付加できます。今回のバージョンでは、opnum にコールバックを付加できます。opnum を持つ静的パターンに一致したためにメッセージが配信されると、ToolTalk サービスはその opnum に付加されたコールバックをすべて調べ、ある場合は起動します。