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
* 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
/*!
* 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.
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;
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)
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)) {
ast_log(LOG_ERROR, "stasis_caching_topic unsubscribed multiple times\n");
}
}
+ return NULL;
}
struct cache_entry {