diff options
author | Kinsey Moore <kmoore@digium.com> | 2013-03-15 12:58:23 +0000 |
---|---|---|
committer | Kinsey Moore <kmoore@digium.com> | 2013-03-15 12:58:23 +0000 |
commit | 8c444f823b4834a426f65a75ae1f3f978a9745d0 (patch) | |
tree | 861e56b013fbc6628edb7e929a1f2dc31f9f6897 | |
parent | ad5f3a5759a6e86e364811198432dcc7597f6109 (diff) |
Make stasis unsubscription functions return NULL
Unsubscribing things in Asterisk seems to very commonly follow with
NULLing out the variable that was unsubscribed. This change makes that
a bit simpler.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@383168 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | include/asterisk/stasis.h | 6 | ||||
-rw-r--r-- | main/stasis.c | 5 | ||||
-rw-r--r-- | main/stasis_cache.c | 3 |
3 files changed, 9 insertions, 5 deletions
diff --git a/include/asterisk/stasis.h b/include/asterisk/stasis.h index 1d35bf87c..9a5f7537c 100644 --- a/include/asterisk/stasis.h +++ b/include/asterisk/stasis.h @@ -306,9 +306,10 @@ struct stasis_subscription *stasis_subscribe(struct stasis_topic *topic, * delivery of the final message. * * \param subscription Subscription to cancel. + * \retval NULL for convenience * \since 12 */ -void stasis_unsubscribe(struct stasis_subscription *subscription); +struct stasis_subscription *stasis_unsubscribe(struct stasis_subscription *subscription); /*! * \brief Create a subscription which forwards all messages from one topic to @@ -450,9 +451,10 @@ struct stasis_caching_topic *stasis_caching_topic_create(struct stasis_topic *or /*! * Unsubscribes a caching topic from its upstream topic. * \param caching_topic Caching topic to unsubscribe + * \retval NULL for convenience * \since 12 */ -void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic); +struct stasis_caching_topic *stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic); /*! * \brief Returns the topic of cached events from a caching topics. diff --git a/main/stasis.c b/main/stasis.c index d1f11537e..7f18bf5e1 100644 --- a/main/stasis.c +++ b/main/stasis.c @@ -172,7 +172,7 @@ struct stasis_subscription *stasis_subscribe(struct stasis_topic *topic, stasis_ return __stasis_subscribe(topic, callback, data, 1); } -void stasis_unsubscribe(struct stasis_subscription *sub) +struct stasis_subscription *stasis_unsubscribe(struct stasis_subscription *sub) { if (sub) { size_t i; @@ -186,12 +186,13 @@ void stasis_unsubscribe(struct stasis_subscription *sub) topic->subscribers[i] = topic->subscribers[--topic->num_subscribers_current]; /* Unsubscribing unrefs the subscription */ ao2_cleanup(sub); - return; + return NULL; } } ast_log(LOG_ERROR, "Internal error: subscription has invalid topic\n"); } + return NULL; } int stasis_subscription_is_subscribed(const struct stasis_subscription *sub) diff --git a/main/stasis_cache.c b/main/stasis_cache.c index f8518ce09..a82492870 100644 --- a/main/stasis_cache.c +++ b/main/stasis_cache.c @@ -65,7 +65,7 @@ struct stasis_topic *stasis_caching_get_topic(struct stasis_caching_topic *cachi return caching_topic->topic; } -void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic) +struct stasis_caching_topic *stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic) { if (caching_topic) { if (stasis_subscription_is_subscribed(caching_topic->sub)) { @@ -74,6 +74,7 @@ void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic) ast_log(LOG_ERROR, "stasis_caching_topic unsubscribed multiple times\n"); } } + return NULL; } struct cache_entry { |