stasis: Fix ABI between DEVMODE and non-DEVMODE.

Create compatibility stubs for maximum ABI compatibility.

ASTERISK-28212 #close

Change-Id: I872c04842ab6b61e9dd6d37e4166bc619aa20626
This commit is contained in:
Corey Farrell 2018-12-26 13:30:07 -05:00
parent ff2ed4eeee
commit 44a7faca21
6 changed files with 55 additions and 77 deletions

View File

@ -604,9 +604,9 @@ void stasis_subscription_cb_noop(void *data, struct stasis_subscription *sub, st
* has been subscribed. This occurs immediately before accepted message
* types can be set and the callback must expect to receive it.
*/
#ifdef AST_DEVMODE
struct stasis_subscription *__stasis_subscribe(struct stasis_topic *topic,
stasis_subscription_cb callback, void *data, const char *file, int lineno, const char *func);
#ifdef AST_DEVMODE
#define stasis_subscribe(topic, callback, data) __stasis_subscribe(topic, callback, data, __FILE__, __LINE__, __PRETTY_FUNCTION__)
#else
struct stasis_subscription *stasis_subscribe(struct stasis_topic *topic,
@ -639,9 +639,9 @@ struct stasis_subscription *stasis_subscribe(struct stasis_topic *topic,
* has been subscribed. This occurs immediately before accepted message
* types can be set and the callback must expect to receive it.
*/
#ifdef AST_DEVMODE
struct stasis_subscription *__stasis_subscribe_pool(struct stasis_topic *topic,
stasis_subscription_cb callback, void *data, const char *file, int lineno, const char *func);
#ifdef AST_DEVMODE
#define stasis_subscribe_pool(topic, callback, data) __stasis_subscribe_pool(topic, callback, data, __FILE__, __LINE__, __PRETTY_FUNCTION__)
#else
struct stasis_subscription *stasis_subscribe_pool(struct stasis_topic *topic,

View File

@ -60,7 +60,6 @@
* \return \c NULL on error.
* \since 12
*/
#ifdef AST_DEVMODE
struct stasis_subscription *internal_stasis_subscribe(
struct stasis_topic *topic,
stasis_subscription_cb callback,
@ -70,13 +69,5 @@ struct stasis_subscription *internal_stasis_subscribe(
const char *file,
int lineno,
const char *func);
#else
struct stasis_subscription *internal_stasis_subscribe(
struct stasis_topic *topic,
stasis_subscription_cb callback,
void *data,
int needs_mailbox,
int use_thread_pool);
#endif
#endif /* STASIS_INTERNAL_H_ */

View File

@ -55,9 +55,9 @@ struct stasis_message_router;
*
* \since 12
*/
#ifdef AST_DEVMODE
struct stasis_message_router *__stasis_message_router_create(
struct stasis_topic *topic, const char *file, int lineno, const char *func);
#ifdef AST_DEVMODE
#define stasis_message_router_create(topic) __stasis_message_router_create(topic, __FILE__, __LINE__, __PRETTY_FUNCTION__)
#else
struct stasis_message_router *stasis_message_router_create(
@ -77,9 +77,9 @@ struct stasis_message_router *stasis_message_router_create(
*
* \since 12.8.0
*/
#ifdef AST_DEVMODE
struct stasis_message_router *__stasis_message_router_create_pool(
struct stasis_topic *topic, const char *file, int lineno, const char *func);
#ifdef AST_DEVMODE
#define stasis_message_router_create_pool(topic) __stasis_message_router_create_pool(topic, __FILE__, __LINE__, __PRETTY_FUNCTION__)
#else
struct stasis_message_router *stasis_message_router_create_pool(

View File

@ -436,10 +436,11 @@ struct stasis_topic *stasis_topic_create(const char *name)
res |= AST_VECTOR_INIT(&topic->upstream_topics, 0);
#ifdef AST_DEVMODE
topic->statistics = stasis_topic_statistics_create(name);
if (!topic->name || !topic->statistics || res) {
if (!topic->name || !topic->statistics || res)
#else
if (!topic->name || res) {
if (!topic->name || res)
#endif
{
ao2_ref(topic, -1);
return NULL;
}
@ -640,7 +641,6 @@ static struct stasis_subscription_statistics *stasis_subscription_statistics_cre
}
#endif
#ifdef AST_DEVMODE
struct stasis_subscription *internal_stasis_subscribe(
struct stasis_topic *topic,
stasis_subscription_cb callback,
@ -650,14 +650,6 @@ struct stasis_subscription *internal_stasis_subscribe(
const char *file,
int lineno,
const char *func)
#else
struct stasis_subscription *internal_stasis_subscribe(
struct stasis_topic *topic,
stasis_subscription_cb callback,
void *data,
int needs_mailbox,
int use_thread_pool)
#endif
{
struct stasis_subscription *sub;
@ -728,7 +720,6 @@ struct stasis_subscription *internal_stasis_subscribe(
return sub;
}
#ifdef AST_DEVMODE
struct stasis_subscription *__stasis_subscribe(
struct stasis_topic *topic,
stasis_subscription_cb callback,
@ -739,17 +730,7 @@ struct stasis_subscription *__stasis_subscribe(
{
return internal_stasis_subscribe(topic, callback, data, 1, 0, file, lineno, func);
}
#else
struct stasis_subscription *stasis_subscribe(
struct stasis_topic *topic,
stasis_subscription_cb callback,
void *data)
{
return internal_stasis_subscribe(topic, callback, data, 1, 0);
}
#endif
#ifdef AST_DEVMODE
struct stasis_subscription *__stasis_subscribe_pool(
struct stasis_topic *topic,
stasis_subscription_cb callback,
@ -760,15 +741,6 @@ struct stasis_subscription *__stasis_subscribe_pool(
{
return internal_stasis_subscribe(topic, callback, data, 1, 1, file, lineno, func);
}
#else
struct stasis_subscription *stasis_subscribe_pool(
struct stasis_topic *topic,
stasis_subscription_cb callback,
void *data)
{
return internal_stasis_subscribe(topic, callback, data, 1, 1);
}
#endif
static int sub_cleanup(void *data)
{
@ -2666,3 +2638,31 @@ int stasis_init(void)
return 0;
}
#ifdef AST_DEVMODE
#undef stasis_subscribe
struct stasis_subscription *stasis_subscribe(
struct stasis_topic *topic,
stasis_subscription_cb callback,
void *data);
#undef stasis_subscribe_pool
struct stasis_subscription *stasis_subscribe_pool(
struct stasis_topic *topic,
stasis_subscription_cb callback,
void *data);
#endif
struct stasis_subscription *stasis_subscribe(
struct stasis_topic *topic,
stasis_subscription_cb callback,
void *data)
{
return internal_stasis_subscribe(topic, callback, data, 1, 0, __FILE__, __LINE__, __PRETTY_FUNCTION__);
}
struct stasis_subscription *stasis_subscribe_pool(
struct stasis_topic *topic,
stasis_subscription_cb callback,
void *data)
{
return internal_stasis_subscribe(topic, callback, data, 1, 1, __FILE__, __LINE__, __PRETTY_FUNCTION__);
}

View File

@ -984,11 +984,7 @@ struct stasis_caching_topic *stasis_caching_topic_create(struct stasis_topic *or
}
ast_free(new_name);
#ifdef AST_DEVMODE
caching_topic->sub = internal_stasis_subscribe(original_topic, caching_topic_exec, caching_topic, 0, 0, __FILE__, __LINE__, __PRETTY_FUNCTION__);
#else
caching_topic->sub = internal_stasis_subscribe(original_topic, caching_topic_exec, caching_topic, 0, 0);
#endif
if (caching_topic->sub == NULL) {
ao2_ref(caching_topic, -1);

View File

@ -204,14 +204,9 @@ static void router_dispatch(void *data,
}
}
#ifdef AST_DEVMODE
static struct stasis_message_router *stasis_message_router_create_internal(
struct stasis_topic *topic, int use_thread_pool, const char *file, int lineno,
const char *func)
#else
static struct stasis_message_router *stasis_message_router_create_internal(
struct stasis_topic *topic, int use_thread_pool)
#endif
{
int res;
struct stasis_message_router *router;
@ -230,19 +225,11 @@ static struct stasis_message_router *stasis_message_router_create_internal(
return NULL;
}
#ifdef AST_DEVMODE
if (use_thread_pool) {
router->subscription = __stasis_subscribe_pool(topic, router_dispatch, router, file, lineno, func);
} else {
router->subscription = __stasis_subscribe(topic, router_dispatch, router, file, lineno, func);
}
#else
if (use_thread_pool) {
router->subscription = stasis_subscribe_pool(topic, router_dispatch, router);
} else {
router->subscription = stasis_subscribe(topic, router_dispatch, router);
}
#endif
if (!router->subscription) {
ao2_ref(router, -1);
@ -256,33 +243,17 @@ static struct stasis_message_router *stasis_message_router_create_internal(
return router;
}
#ifdef AST_DEVMODE
struct stasis_message_router *__stasis_message_router_create(
struct stasis_topic *topic, const char *file, int lineno, const char *func)
{
return stasis_message_router_create_internal(topic, 0, file, lineno, func);
}
#else
struct stasis_message_router *stasis_message_router_create(
struct stasis_topic *topic)
{
return stasis_message_router_create_internal(topic, 0);
}
#endif
#ifdef AST_DEVMODE
struct stasis_message_router *__stasis_message_router_create_pool(
struct stasis_topic *topic, const char *file, int lineno, const char *func)
{
return stasis_message_router_create_internal(topic, 1, file, lineno, func);
}
#else
struct stasis_message_router *stasis_message_router_create_pool(
struct stasis_topic *topic)
{
return stasis_message_router_create_internal(topic, 1);
}
#endif
void stasis_message_router_unsubscribe(struct stasis_message_router *router)
{
@ -440,3 +411,23 @@ void stasis_message_router_accept_formatters(struct stasis_message_router *route
return;
}
#ifdef AST_DEVMODE
#undef stasis_message_router_create
struct stasis_message_router *stasis_message_router_create(
struct stasis_topic *topic);
#undef stasis_message_router_create_pool
struct stasis_message_router *stasis_message_router_create_pool(
struct stasis_topic *topic);
#endif
struct stasis_message_router *stasis_message_router_create(
struct stasis_topic *topic)
{
return stasis_message_router_create_internal(topic, 0, __FILE__, __LINE__, __PRETTY_FUNCTION__);
}
struct stasis_message_router *stasis_message_router_create_pool(
struct stasis_topic *topic)
{
return stasis_message_router_create_internal(topic, 1, __FILE__, __LINE__, __PRETTY_FUNCTION__);
}