summaryrefslogtreecommitdiff
path: root/main/stasis_message_router.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/stasis_message_router.c')
-rw-r--r--main/stasis_message_router.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/main/stasis_message_router.c b/main/stasis_message_router.c
index da288e864..a9e458456 100644
--- a/main/stasis_message_router.c
+++ b/main/stasis_message_router.c
@@ -206,8 +206,8 @@ static void router_dispatch(void *data,
}
}
-struct stasis_message_router *stasis_message_router_create(
- struct stasis_topic *topic)
+static struct stasis_message_router *stasis_message_router_create_internal(
+ struct stasis_topic *topic, int use_thread_pool)
{
int res;
RAII_VAR(struct stasis_message_router *, router, NULL, ao2_cleanup);
@@ -224,7 +224,11 @@ struct stasis_message_router *stasis_message_router_create(
return NULL;
}
- router->subscription = stasis_subscribe(topic, router_dispatch, router);
+ if (use_thread_pool) {
+ router->subscription = stasis_subscribe_pool(topic, router_dispatch, router);
+ } else {
+ router->subscription = stasis_subscribe(topic, router_dispatch, router);
+ }
if (!router->subscription) {
return NULL;
}
@@ -233,6 +237,18 @@ struct stasis_message_router *stasis_message_router_create(
return router;
}
+struct stasis_message_router *stasis_message_router_create(
+ struct stasis_topic *topic)
+{
+ return stasis_message_router_create_internal(topic, 0);
+}
+
+struct stasis_message_router *stasis_message_router_create_pool(
+ struct stasis_topic *topic)
+{
+ return stasis_message_router_create_internal(topic, 1);
+}
+
void stasis_message_router_unsubscribe(struct stasis_message_router *router)
{
if (!router) {