A simplistic router for stasis_message's.
authorDavid M. Lee <dlee@digium.com>
Fri, 15 Mar 2013 17:35:16 +0000 (17:35 +0000)
committerDavid M. Lee <dlee@digium.com>
Fri, 15 Mar 2013 17:35:16 +0000 (17:35 +0000)
commit49e3489cac88927c87ce2b9c3e69a51aacf0bdc5
tree501c46235f3b993322cb174f01d7190fc3b2fbd9
parent641fc7ea54618828843e742f17c4d3415c1c5e26
A simplistic router for stasis_message's.

Often times, when subscribing to a topic, one wants to handle
different message types differently. While one could cascade if/else
statements through the subscription handler, it is much cleaner to
specify a different callback for each message type. The
stasis_message_router is here to help!

A stasis_message_router is constructed for a particular stasis_topic,
which is subscribes to. Call stasis_message_router_unsubscribe() to
cancel that subscription.

Once constructed, routes can be added using
stasis_message_router_add() (or stasis_message_router_set_default()
for any messages not handled by other routes). There may be only one
route per stasis_message_type. The route's callback is invoked just as
if it were a callback for a subscription; but it only gets called for
messages of the specified type.

(issue ASTERISK-20887)
Review: https://reviewboard.asterisk.org/r/2390/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@383242 65c4cc65-6c06-0410-ace0-fbb531ad65f3
include/asterisk/stasis_message_router.h [new file with mode: 0644]
main/stasis.c
main/stasis_cache.c
main/stasis_message.c
main/stasis_message_router.c [new file with mode: 0644]
tests/test_stasis.c