Asterisk - The Open Source Telephony Project
18.5.0
|
#include "asterisk/stasis.h"
Go to the source code of this file.
Macros | |
#define | stasis_message_router_create(topic) __stasis_message_router_create(topic, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
#define | stasis_message_router_create_pool(topic) __stasis_message_router_create_pool(topic, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Functions | |
struct stasis_message_router * | __stasis_message_router_create (struct stasis_topic *topic, const char *file, int lineno, const char *func) |
Create a new message router object. More... | |
struct stasis_message_router * | __stasis_message_router_create_pool (struct stasis_topic *topic, const char *file, int lineno, const char *func) |
Create a new message router object. More... | |
void | stasis_message_router_accept_formatters (struct stasis_message_router *router, enum stasis_subscription_message_formatters formatters) |
Indicate to a message router that we are interested in messages with one or more formatters. More... | |
int | stasis_message_router_add (struct stasis_message_router *router, struct stasis_message_type *message_type, stasis_subscription_cb callback, void *data) |
Add a route to a message router. More... | |
int | stasis_message_router_add_cache_update (struct stasis_message_router *router, struct stasis_message_type *message_type, stasis_subscription_cb callback, void *data) |
Add a route for stasis_cache_update messages to a message router. More... | |
int | stasis_message_router_is_done (struct stasis_message_router *router) |
Returns whether router has received its final message. More... | |
void | stasis_message_router_publish_sync (struct stasis_message_router *router, struct stasis_message *message) |
Publish a message to a message router's subscription synchronously. More... | |
void | stasis_message_router_remove (struct stasis_message_router *router, struct stasis_message_type *message_type) |
Remove a route from a message router. More... | |
void | stasis_message_router_remove_cache_update (struct stasis_message_router *router, struct stasis_message_type *message_type) |
Remove a cache route from a message router. More... | |
int | stasis_message_router_set_congestion_limits (struct stasis_message_router *router, long low_water, long high_water) |
Set the high and low alert water marks of the stasis message router. More... | |
int | stasis_message_router_set_default (struct stasis_message_router *router, stasis_subscription_cb callback, void *data) |
Sets the default route of a router. More... | |
void | stasis_message_router_set_formatters_default (struct stasis_message_router *router, stasis_subscription_cb callback, void *data, enum stasis_subscription_message_formatters formatters) |
Sets the default route of a router with formatters. More... | |
void | stasis_message_router_unsubscribe (struct stasis_message_router *router) |
Unsubscribe the router from the upstream topic. More... | |
void | stasis_message_router_unsubscribe_and_join (struct stasis_message_router *router) |
Unsubscribe the router from the upstream topic, blocking until the final message has been processed. More... | |
#define stasis_message_router_create | ( | topic | ) | __stasis_message_router_create(topic, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Definition at line 60 of file stasis_message_router.h.
Referenced by app_create(), AST_TEST_DEFINE(), create_routes(), forwards_create_endpoint(), load_module(), manager_confbridge_init(), manager_endpoints_init(), manager_subscriptions_init(), meetme_stasis_init(), and pjsip_outbound_registration_metrics_init().
#define stasis_message_router_create_pool | ( | topic | ) | __stasis_message_router_create_pool(topic, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Definition at line 77 of file stasis_message_router.h.
Referenced by AST_TEST_DEFINE(), endpoint_internal_create(), and setup_stasis_subs().
struct stasis_message_router* __stasis_message_router_create | ( | struct stasis_topic * | topic, |
const char * | file, | ||
int | lineno, | ||
const char * | func | ||
) |
Create a new message router object.
topic | Topic to subscribe route to. |
NULL
on error.Definition at line 246 of file stasis_message_router.c.
References stasis_message_router_create_internal().
struct stasis_message_router* __stasis_message_router_create_pool | ( | struct stasis_topic * | topic, |
const char * | file, | ||
int | lineno, | ||
const char * | func | ||
) |
Create a new message router object.
The subscription created for this message router will dispatch callbacks on a thread pool.
topic | Topic to subscribe route to. |
NULL
on error.Definition at line 252 of file stasis_message_router.c.
References stasis_message_router_create_internal().
void stasis_message_router_accept_formatters | ( | struct stasis_message_router * | router, |
enum stasis_subscription_message_formatters | formatters | ||
) |
Indicate to a message router that we are interested in messages with one or more formatters.
The formatters are passed on to the underlying subscription.
router | Router to set the formatters of. |
formatters | A bitmap of stasis_subscription_message_formatters we wish to receive. |
Definition at line 420 of file stasis_message_router.c.
References ast_assert, NULL, stasis_subscription_accept_formatters(), and stasis_message_router::subscription.
int stasis_message_router_add | ( | struct stasis_message_router * | router, |
struct stasis_message_type * | message_type, | ||
stasis_subscription_cb | callback, | ||
void * | data | ||
) |
Add a route to a message router.
A particular message_type may have at most one route per router. If you route stasis_cache_update messages, the callback will only receive updates for types not handled by routes added with stasis_message_router_add_cache_update().
Adding multiple routes for the same message type results in undefined behavior.
router | Router to add the route to. |
message_type | Type of message to route. |
callback | Callback to forard messages of message_type to. |
data | Data pointer to pass to callback. |
0 | on success |
-1 | on failure |
Definition at line 310 of file stasis_message_router.c.
References ao2_lock, ao2_unlock, ast_assert, NULL, route_table_add(), stasis_message_router::routes, stasis_subscription_accept_message_type(), STASIS_SUBSCRIPTION_FILTER_SELECTIVE, stasis_subscription_set_filter(), and stasis_message_router::subscription.
Referenced by app_create(), AST_TEST_DEFINE(), create_routes(), endpoint_internal_create(), forwards_create_endpoint(), load_general_config(), load_module(), manager_bridging_init(), manager_channels_init(), manager_confbridge_init(), manager_endpoints_init(), manager_mwi_init(), manager_subscriptions_init(), meetme_stasis_init(), pjsip_outbound_registration_metrics_init(), and setup_stasis_subs().
int stasis_message_router_add_cache_update | ( | struct stasis_message_router * | router, |
struct stasis_message_type * | message_type, | ||
stasis_subscription_cb | callback, | ||
void * | data | ||
) |
Add a route for stasis_cache_update messages to a message router.
A particular message_type may have at most one cache route per router. These are distinct from regular routes, so one could have both a regular route and a cache route for the same message_type.
Adding multiple routes for the same message type results in undefined behavior.
router | Router to add the route to. |
message_type | Subtype of cache update to route. |
callback | Callback to forard messages of message_type to. |
data | Data pointer to pass to callback. |
0 | on success |
-1 | on failure |
Definition at line 336 of file stasis_message_router.c.
References ao2_lock, ao2_unlock, ast_assert, stasis_message_router::cache_routes, NULL, route_table_add(), stasis_cache_update_type(), stasis_subscription_accept_message_type(), STASIS_SUBSCRIPTION_FILTER_SELECTIVE, stasis_subscription_set_filter(), and stasis_message_router::subscription.
Referenced by app_create(), and AST_TEST_DEFINE().
int stasis_message_router_is_done | ( | struct stasis_message_router * | router | ) |
Returns whether router has received its final message.
router | Router. |
Definition at line 278 of file stasis_message_router.c.
References stasis_subscription_is_done(), and stasis_message_router::subscription.
Referenced by endpoint_dtor().
void stasis_message_router_publish_sync | ( | struct stasis_message_router * | router, |
struct stasis_message * | message | ||
) |
Publish a message to a message router's subscription synchronously.
router | Router |
message | The Stasis Message Bus API message |
This should be used when a message needs to be published synchronously to the underlying subscription created by a message router. This is analagous to stasis_publish_sync.
Note that the caller will be blocked until the thread servicing the message on the message router's subscription completes handling of the message.
Definition at line 288 of file stasis_message_router.c.
References ao2_bump, ao2_cleanup, ast_assert, NULL, stasis_publish_sync(), and stasis_message_router::subscription.
Referenced by ast_cdr_engine_term(), cdr_prop_write(), cdr_read(), cdr_write(), forkcdr_exec(), and publish_app_cdr_message().
void stasis_message_router_remove | ( | struct stasis_message_router * | router, |
struct stasis_message_type * | message_type | ||
) |
Remove a route from a message router.
If a route is removed from another thread, there is no notification that all messages using this route have been processed. This typically means that the associated data
pointer for this route must be kept until the route itself is disposed of.
router | Router to remove the route from. |
message_type | Type of message to route. |
Definition at line 358 of file stasis_message_router.c.
References ao2_lock, ao2_unlock, ast_assert, NULL, route_table_remove(), and stasis_message_router::routes.
Referenced by cleanup_module(), load_general_config(), and unload_module().
void stasis_message_router_remove_cache_update | ( | struct stasis_message_router * | router, |
struct stasis_message_type * | message_type | ||
) |
Remove a cache route from a message router.
If a route is removed from another thread, there is no notification that all messages using this route have been processed. This typically means that the associated data
pointer for this route must be kept until the route itself is disposed of.
router | Router to remove the route from. |
message_type | Type of message to route. |
Definition at line 372 of file stasis_message_router.c.
References ao2_lock, ao2_unlock, ast_assert, stasis_message_router::cache_routes, NULL, and route_table_remove().
int stasis_message_router_set_congestion_limits | ( | struct stasis_message_router * | router, |
long | low_water, | ||
long | high_water | ||
) |
Set the high and low alert water marks of the stasis message router.
router | Pointer to a stasis message router |
low_water | New queue low water mark. (-1 to set as 90% of high_water) |
high_water | New queue high water mark. |
0 | on success. |
-1 | on error (water marks not changed). |
Definition at line 298 of file stasis_message_router.c.
References stasis_subscription_set_congestion_limits(), and stasis_message_router::subscription.
Referenced by create_routes(), load_module(), and manager_subscriptions_init().
int stasis_message_router_set_default | ( | struct stasis_message_router * | router, |
stasis_subscription_cb | callback, | ||
void * | data | ||
) |
Sets the default route of a router.
router | Router to set the default route of. |
callback | Callback to forward messages which otherwise have no home. |
data | Data pointer to pass to callback. |
0 | on success |
-1 | on failure |
Definition at line 387 of file stasis_message_router.c.
References stasis_message_router_set_formatters_default(), and STASIS_SUBSCRIPTION_FORMATTER_NONE.
Referenced by AST_TEST_DEFINE(), load_module(), and setup_stasis_subs().
void stasis_message_router_set_formatters_default | ( | struct stasis_message_router * | router, |
stasis_subscription_cb | callback, | ||
void * | data, | ||
enum stasis_subscription_message_formatters | formatters | ||
) |
Sets the default route of a router with formatters.
router | Router to set the default route of. |
callback | Callback to forward messages which otherwise have no home. |
data | Data pointer to pass to callback. |
formatters | A bitmap of stasis_subscription_message_formatters we wish to receive. |
Definition at line 397 of file stasis_message_router.c.
References ao2_lock, ao2_unlock, ast_assert, stasis_message_route::callback, stasis_message_route::data, stasis_message_router::default_route, NULL, stasis_subscription_accept_formatters(), STASIS_SUBSCRIPTION_FILTER_FORCED_NONE, STASIS_SUBSCRIPTION_FORMATTER_NONE, stasis_subscription_set_filter(), and stasis_message_router::subscription.
Referenced by app_create(), manager_subscriptions_init(), and stasis_message_router_set_default().
void stasis_message_router_unsubscribe | ( | struct stasis_message_router * | router | ) |
Unsubscribe the router from the upstream topic.
router | Router to unsubscribe. |
Definition at line 258 of file stasis_message_router.c.
References ao2_lock, ao2_unlock, stasis_unsubscribe(), and stasis_message_router::subscription.
Referenced by app_shutdown(), ast_endpoint_shutdown(), AST_TEST_DEFINE(), manager_confbridge_shutdown(), meetme_stasis_cleanup(), remove_stasis_subscriptions(), and setup_stasis_subs().
void stasis_message_router_unsubscribe_and_join | ( | struct stasis_message_router * | router | ) |
Unsubscribe the router from the upstream topic, blocking until the final message has been processed.
See stasis_unsubscribe_and_join() for info on when to use this vs. stasis_message_router_unsubscribe().
router | Router to unsubscribe. |
Definition at line 269 of file stasis_message_router.c.
References stasis_unsubscribe_and_join(), and stasis_message_router::subscription.
Referenced by AST_TEST_DEFINE(), cdr_engine_shutdown(), cleanup_module(), destroy_routes(), manager_endpoints_shutdown(), manager_shutdown(), pjsip_outbound_registration_metrics_unload_cb(), and unload_module().