static void bridge_merge_cb(void *data, struct stasis_subscription *sub, struct stasis_message *message) { struct ast_bridge_merge_message *merge_msg = stasis_message_data(message); RAII_VAR(struct ast_str *, to_text, NULL, ast_free); RAII_VAR(struct ast_str *, from_text, NULL, ast_free); ast_assert(merge_msg->to != NULL); ast_assert(merge_msg->from != NULL); 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; } /*** DOCUMENTATION <managerEventInstance> <synopsis>Raised when two bridges are merged.</synopsis> <syntax> <bridge_snapshot prefix="To"/> <bridge_snapshot prefix="From"/> </syntax> </managerEventInstance> ***/ manager_event(EVENT_FLAG_CALL, "BridgeMerge", "%s" "%s", ast_str_buffer(to_text), ast_str_buffer(from_text)); }
/*! \internal \brief convert multi object blob to ami string */ static struct ast_str *multi_object_blob_to_ami(void *obj) { struct ast_str *ami_str=ast_str_create(1024); struct ast_str *ami_snapshot; const struct ast_multi_object_blob *multi = obj; enum stasis_user_multi_object_snapshot_type type; int i; if (!ami_str) { return NULL; } if (!multi) { ast_free(ami_str); return NULL; } for (type = 0; type < STASIS_UMOS_MAX; ++type) { for (i = 0; i < AST_VECTOR_SIZE(&multi->snapshots[type]); ++i) { char *name = ""; void *snapshot = AST_VECTOR_GET(&multi->snapshots[type], i); ami_snapshot = NULL; if (i > 0) { ast_asprintf(&name, "%d", i + 1); } switch (type) { case STASIS_UMOS_CHANNEL: ami_snapshot = ast_manager_build_channel_state_string_prefix(snapshot, name); break; case STASIS_UMOS_BRIDGE: ami_snapshot = ast_manager_build_bridge_state_string_prefix(snapshot, name); break; case STASIS_UMOS_ENDPOINT: /* currently not sending endpoint snapshots to AMI */ break; } if (ami_snapshot) { ast_str_append(&ami_str, 0, "%s", ast_str_buffer(ami_snapshot)); ast_free(ami_snapshot); } } } return ami_str; }
struct ast_str *ast_manager_build_bridge_state_string( const struct ast_bridge_snapshot *snapshot) { return ast_manager_build_bridge_state_string_prefix(snapshot, ""); }