summaryrefslogtreecommitdiff
path: root/main/manager_bridges.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2013-08-08 19:16:33 +0000
committerRichard Mudgett <rmudgett@digium.com>2013-08-08 19:16:33 +0000
commit3f724fa493f327329b10d2ab768e6dd683fa846a (patch)
tree5c7972a4a71be7586fb51209f8a605e80861097b /main/manager_bridges.c
parent16fd65bb73b3cac8df5fc3fe9836b34bfd1fd541 (diff)
Make bridge snapshots use prefixes.
* Changed ast_manager_build_bridge_state_string() to assume an empty prefix string just like ast_manager_build_channel_state_string(). * Created ast_manager_build_bridge_state_string_prefix() to work just like ast_manager_build_channel_state_string_prefix(). * Made BridgeMerge AMI event use To/From prefixes. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396417 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/manager_bridges.c')
-rw-r--r--main/manager_bridges.c47
1 files changed, 27 insertions, 20 deletions
diff --git a/main/manager_bridges.c b/main/manager_bridges.c
index b045ca5b5..77d9ff05e 100644
--- a/main/manager_bridges.c
+++ b/main/manager_bridges.c
@@ -108,25 +108,26 @@ static struct stasis_message_router *bridge_state_router;
*/
static struct stasis_subscription *topic_forwarder;
-struct ast_str *ast_manager_build_bridge_state_string(
+struct ast_str *ast_manager_build_bridge_state_string_prefix(
const struct ast_bridge_snapshot *snapshot,
- const char *suffix)
+ const char *prefix)
{
struct ast_str *out = ast_str_create(128);
- int res = 0;
+ int res;
+
if (!out) {
return NULL;
}
- res = ast_str_set(&out, 0,
- "BridgeUniqueid%s: %s\r\n"
- "BridgeType%s: %s\r\n"
- "BridgeTechnology%s: %s\r\n"
- "BridgeNumChannels%s: %d\r\n",
- suffix, snapshot->uniqueid,
- suffix, snapshot->subclass,
- suffix, snapshot->technology,
- suffix, snapshot->num_channels);
+ res = ast_str_set(&out, 0,
+ "%sBridgeUniqueid: %s\r\n"
+ "%sBridgeType: %s\r\n"
+ "%sBridgeTechnology: %s\r\n"
+ "%sBridgeNumChannels: %d\r\n",
+ prefix, snapshot->uniqueid,
+ prefix, snapshot->subclass,
+ prefix, snapshot->technology,
+ prefix, snapshot->num_channels);
if (!res) {
ast_free(out);
return NULL;
@@ -135,6 +136,12 @@ struct ast_str *ast_manager_build_bridge_state_string(
return out;
}
+struct ast_str *ast_manager_build_bridge_state_string(
+ const struct ast_bridge_snapshot *snapshot)
+{
+ return ast_manager_build_bridge_state_string_prefix(snapshot, "");
+}
+
/*! \brief Typedef for callbacks that get called on channel snapshot updates */
typedef struct ast_manager_event_blob *(*bridge_snapshot_monitor)(
struct ast_bridge_snapshot *old_snapshot,
@@ -201,7 +208,7 @@ static void bridge_snapshot_update(void *data, struct stasis_subscription *sub,
if (!bridge_event_string) {
bridge_event_string =
ast_manager_build_bridge_state_string(
- new_snapshot ? new_snapshot : old_snapshot, "");
+ new_snapshot ? new_snapshot : old_snapshot);
if (!bridge_event_string) {
return;
}
@@ -224,8 +231,8 @@ static void bridge_merge_cb(void *data, struct stasis_subscription *sub,
ast_assert(merge_msg->to != NULL);
ast_assert(merge_msg->from != NULL);
- to_text = ast_manager_build_bridge_state_string(merge_msg->to, "");
- from_text = ast_manager_build_bridge_state_string(merge_msg->from, "From");
+ to_text = ast_manager_build_bridge_state_string_prefix(merge_msg->to, "To");
+ from_text = ast_manager_build_bridge_state_string_prefix(merge_msg->from, "From");
if (!to_text || !from_text) {
return;
}
@@ -234,7 +241,7 @@ static void bridge_merge_cb(void *data, struct stasis_subscription *sub,
<managerEventInstance>
<synopsis>Raised when two bridges are merged.</synopsis>
<syntax>
- <bridge_snapshot/>
+ <bridge_snapshot prefix="To"/>
<bridge_snapshot prefix="From"/>
</syntax>
</managerEventInstance>
@@ -256,7 +263,7 @@ static void channel_enter_cb(void *data, struct stasis_subscription *sub,
RAII_VAR(struct ast_str *, channel_text, NULL, ast_free);
const char *swap_id;
- bridge_text = ast_manager_build_bridge_state_string(blob->bridge, "");
+ bridge_text = ast_manager_build_bridge_state_string(blob->bridge);
channel_text = ast_manager_build_channel_state_string(blob->channel);
if (!bridge_text || !channel_text) {
return;
@@ -283,7 +290,7 @@ static void channel_leave_cb(void *data, struct stasis_subscription *sub,
RAII_VAR(struct ast_str *, bridge_text, NULL, ast_free);
RAII_VAR(struct ast_str *, channel_text, NULL, ast_free);
- bridge_text = ast_manager_build_bridge_state_string(blob->bridge, "");
+ bridge_text = ast_manager_build_bridge_state_string(blob->bridge);
channel_text = ast_manager_build_channel_state_string(blob->channel);
if (!bridge_text || !channel_text) {
return;
@@ -309,7 +316,7 @@ static int send_bridge_list_item_cb(void *obj, void *arg, void *data, int flags)
struct ast_bridge_snapshot *snapshot = stasis_message_data(obj);
struct mansession *s = arg;
char *id_text = data;
- RAII_VAR(struct ast_str *, bridge_info, ast_manager_build_bridge_state_string(snapshot, ""), ast_free);
+ RAII_VAR(struct ast_str *, bridge_info, ast_manager_build_bridge_state_string(snapshot), ast_free_ptr);
if (!bridge_info) {
return 0;
@@ -432,7 +439,7 @@ static int manager_bridge_info(struct mansession *s, const struct message *m)
astman_send_ack(s, m, "Bridge channel listing will follow");
snapshot = stasis_message_data(msg);
- bridge_info = ast_manager_build_bridge_state_string(snapshot, "");
+ bridge_info = ast_manager_build_bridge_state_string(snapshot);
ao2_callback_data(snapshot->channels, OBJ_NODATA, send_bridge_info_item_cb, s, ast_str_buffer(id_text));