diff options
author | David M. Lee <dlee@digium.com> | 2013-06-11 15:46:35 +0000 |
---|---|---|
committer | David M. Lee <dlee@digium.com> | 2013-06-11 15:46:35 +0000 |
commit | dbdb2b1b3a618a79b3e42c77c05cb2688b4da08d (patch) | |
tree | 6d7174c03a0388cf81bee13403cf4c118184d1d9 /main/manager_channels.c | |
parent | 2053fc31594d4069cb178e591ab2b4e0df08b268 (diff) |
Add vtable and methods for to_json and to_ami for Stasis messages
When a Stasis message type is defined in a loadable module, handling
those messages for AMI and res_stasis events can be cumbersome.
This patch adds a vtable to stasis_message_type, with to_ami and
to_json virtual functions. These allow messages to be handled
abstractly without putting module-specific code in core.
As an example, the VarSet AMI event was refactored to use the to_ami
virtual function.
(closes issue ASTERISK-21817)
Review: https://reviewboard.asterisk.org/r/2579/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@391403 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/manager_channels.c')
-rw-r--r-- | main/manager_channels.c | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/main/manager_channels.c b/main/manager_channels.c index b6eeb60b0..277dc873d 100644 --- a/main/manager_channels.c +++ b/main/manager_channels.c @@ -710,49 +710,6 @@ static void channel_snapshot_update(void *data, struct stasis_subscription *sub, } } -static void channel_varset_cb(void *data, struct stasis_subscription *sub, - struct stasis_topic *topic, struct stasis_message *message) -{ - struct ast_channel_blob *obj = stasis_message_data(message); - RAII_VAR(struct ast_str *, channel_event_string, NULL, ast_free); - const char *variable = ast_json_string_get(ast_json_object_get(obj->blob, "variable")); - const char *value = ast_json_string_get(ast_json_object_get(obj->blob, "value")); - - if (obj->snapshot) { - channel_event_string = ast_manager_build_channel_state_string(obj->snapshot); - } else { - channel_event_string = ast_str_create(35); - ast_str_set(&channel_event_string, 0, - "Channel: none\r\n" - "Uniqueid: none\r\n"); - } - - if (!channel_event_string) { - return; - } - - /*** DOCUMENTATION - <managerEventInstance> - <synopsis>Raised when a variable is set to a particular value.</synopsis> - <syntax> - <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" /> - <parameter name="Variable"> - <para>The variable being set.</para> - </parameter> - <parameter name="Value"> - <para>The new value of the variable.</para> - </parameter> - </syntax> - </managerEventInstance> - ***/ - manager_event(EVENT_FLAG_DIALPLAN, "VarSet", - "%s" - "Variable: %s\r\n" - "Value: %s\r\n", - ast_str_buffer(channel_event_string), - variable, value); -} - static int userevent_exclusion_cb(const char *key) { if (!strcmp("type", key)) { @@ -1280,11 +1237,6 @@ int manager_channels_init(void) NULL); ret |= stasis_message_router_add(message_router, - ast_channel_varset_type(), - channel_varset_cb, - NULL); - - ret |= stasis_message_router_add(message_router, ast_channel_user_event_type(), channel_user_event_cb, NULL); |