[asterisk-commits] file: branch file/bridge_unreal r410304 - in /team/file/bridge_unreal: apps/ ...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sat Mar 8 13:32:38 CST 2014
Author: file
Date: Sat Mar 8 13:32:22 2014
New Revision: 410304
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=410304
Log:
Remove optimization messages.
I'm going CRAZY with this!
Modified:
team/file/bridge_unreal/apps/app_queue.c
team/file/bridge_unreal/include/asterisk/core_local.h
team/file/bridge_unreal/include/asterisk/core_unreal.h
team/file/bridge_unreal/main/cel.c
team/file/bridge_unreal/main/core_local.c
Modified: team/file/bridge_unreal/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/team/file/bridge_unreal/apps/app_queue.c?view=diff&rev=410304&r1=410303&r2=410304
==============================================================================
--- team/file/bridge_unreal/apps/app_queue.c (original)
+++ team/file/bridge_unreal/apps/app_queue.c Sat Mar 8 13:32:22 2014
@@ -5700,122 +5700,6 @@
/*!
* \internal
- * \brief Handler for the beginning of a local channel optimization
- *
- * This method gathers data relevant to the local channel optimization and stores
- * it to be used once the local optimization completes.
- *
- * \param userdata Data pertaining to the particular call in the queue.
- * \param sub The stasis subscription on which the message occurred.
- * \param topic The topic for this event.
- * \param msg The stasis message for the local optimization begin event
- */
-static void handle_local_optimization_begin(void *userdata, struct stasis_subscription *sub,
- struct stasis_message *msg)
-{
- struct queue_stasis_data *queue_data = userdata;
- struct ast_multi_channel_blob *optimization_blob = stasis_message_data(msg);
- struct ast_channel_snapshot *local_one = ast_multi_channel_blob_get_channel(optimization_blob, "1");
- struct ast_channel_snapshot *local_two = ast_multi_channel_blob_get_channel(optimization_blob, "2");
- struct ast_channel_snapshot *source = ast_multi_channel_blob_get_channel(optimization_blob, "source");
- struct local_optimization *optimization;
- unsigned int id;
- SCOPED_AO2LOCK(lock, queue_data);
-
- if (queue_data->dying) {
- return;
- }
-
- if (!strcmp(local_one->uniqueid, queue_data->member_uniqueid)) {
- optimization = &queue_data->member_optimize;
- } else if (!strcmp(local_two->uniqueid, queue_data->caller_uniqueid)) {
- optimization = &queue_data->caller_optimize;
- } else {
- return;
- }
-
- /* We only allow move-swap optimizations, so there had BETTER be a source */
- ast_assert(source != NULL);
-
- optimization->source_chan_uniqueid = ast_strdup(source->uniqueid);
- if (!optimization->source_chan_uniqueid) {
- ast_log(LOG_ERROR, "Unable to track local channel optimization for channel %s. Expect further errors\n", local_one->name);
- return;
- }
- id = ast_json_integer_get(ast_json_object_get(ast_multi_channel_blob_get_json(optimization_blob), "id"));
-
- optimization->id = id;
- optimization->in_progress = 1;
-}
-
-/*!
- * \internal
- * \brief Handler for the end of a local channel optimization
- *
- * This method takes the data gathered during the local channel optimization begin
- * event and applies it to the queue stasis data appropriately. This generally involves
- * updating the caller or member unique ID with the channel that is taking the place of
- * the previous caller or member.
- *
- * \param userdata Data pertaining to the particular call in the queue.
- * \param sub The stasis subscription on which the message occurred.
- * \param topic The topic for this event.
- * \param msg The stasis message for the local optimization end event
- */
-static void handle_local_optimization_end(void *userdata, struct stasis_subscription *sub,
- struct stasis_message *msg)
-{
- struct queue_stasis_data *queue_data = userdata;
- struct ast_multi_channel_blob *optimization_blob = stasis_message_data(msg);
- struct ast_channel_snapshot *local_one = ast_multi_channel_blob_get_channel(optimization_blob, "1");
- struct ast_channel_snapshot *local_two = ast_multi_channel_blob_get_channel(optimization_blob, "2");
- struct local_optimization *optimization;
- int is_caller;
- unsigned int id;
- SCOPED_AO2LOCK(lock, queue_data);
-
- if (queue_data->dying) {
- return;
- }
-
- if (!strcmp(local_one->uniqueid, queue_data->member_uniqueid)) {
- optimization = &queue_data->member_optimize;
- is_caller = 0;
- } else if (!strcmp(local_two->uniqueid, queue_data->caller_uniqueid)) {
- optimization = &queue_data->caller_optimize;
- is_caller = 1;
- } else {
- return;
- }
-
- id = ast_json_integer_get(ast_json_object_get(ast_multi_channel_blob_get_json(optimization_blob), "id"));
-
- if (!optimization->in_progress) {
- ast_log(LOG_WARNING, "Told of a local optimization end when we had no previous begin\n");
- return;
- }
-
- if (id != optimization->id) {
- ast_log(LOG_WARNING, "Local optimization end event ID does not match begin (%u != %u)\n",
- id, optimization->id);
- return;
- }
-
- if (is_caller) {
- ast_debug(3, "Local optimization: Changing queue caller uniqueid from %s to %s\n",
- queue_data->caller_uniqueid, optimization->source_chan_uniqueid);
- ast_string_field_set(queue_data, caller_uniqueid, optimization->source_chan_uniqueid);
- } else {
- ast_debug(3, "Local optimization: Changing queue member uniqueid from %s to %s\n",
- queue_data->member_uniqueid, optimization->source_chan_uniqueid);
- ast_string_field_set(queue_data, member_uniqueid, optimization->source_chan_uniqueid);
- }
-
- optimization->in_progress = 0;
-}
-
-/*!
- * \internal
* \brief Handler for hangup stasis event
*
* This is how we determine that the caller or member has hung up and the call
@@ -5948,10 +5832,6 @@
}
ao2_ref(queue_data, +1);
- stasis_message_router_add(queue_data->channel_router, ast_local_optimization_begin_type(),
- handle_local_optimization_begin, queue_data);
- stasis_message_router_add(queue_data->channel_router, ast_local_optimization_end_type(),
- handle_local_optimization_end, queue_data);
stasis_message_router_add(queue_data->channel_router, ast_channel_hangup_request_type(),
handle_hangup, queue_data);
stasis_message_router_set_default(queue_data->channel_router,
Modified: team/file/bridge_unreal/include/asterisk/core_local.h
URL: http://svnview.digium.com/svn/asterisk/team/file/bridge_unreal/include/asterisk/core_local.h?view=diff&rev=410304&r1=410303&r2=410304
==============================================================================
--- team/file/bridge_unreal/include/asterisk/core_local.h (original)
+++ team/file/bridge_unreal/include/asterisk/core_local.h Sat Mar 8 13:32:22 2014
@@ -106,30 +106,6 @@
*/
struct stasis_message_type *ast_local_bridge_type(void);
-/*!
- * \brief Message type for when a local channel optimization begins
- * \since 12.0.0
- *
- * \note Payloads for the \ref ast_local_optimization_begin_type are a
- * \ref ast_multi_channel_blob. Roles for the channels in the \ref ast_multi_channel_blob
- * are "1" and "2", reflecting the two halves.
- *
- * \retval A \ref stasis message type
- */
-struct stasis_message_type *ast_local_optimization_begin_type(void);
-
-/*!
- * \brief Message type for when a local channel optimization completes
- * \since 12.0.0
- *
- * \note Payloads for the \ref ast_local_optimization_end_type are a
- * \ref ast_multi_channel_blob. Roles for the channels in the \ref ast_multi_channel_blob
- * are "1" and "2", reflecting the two halves.
- *
- * \retval A \ref stasis message type
- */
-struct stasis_message_type *ast_local_optimization_end_type(void);
-
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
Modified: team/file/bridge_unreal/include/asterisk/core_unreal.h
URL: http://svnview.digium.com/svn/asterisk/team/file/bridge_unreal/include/asterisk/core_unreal.h?view=diff&rev=410304&r1=410303&r2=410304
==============================================================================
--- team/file/bridge_unreal/include/asterisk/core_unreal.h (original)
+++ team/file/bridge_unreal/include/asterisk/core_unreal.h Sat Mar 8 13:32:22 2014
@@ -52,36 +52,6 @@
};
/*!
- * \brief Callbacks that can be provided by concrete implementations of the unreal
- * channel driver that will be called when events occur in the unreal layer
- */
-struct ast_unreal_pvt_callbacks {
- /*!
- * \brief Called when an optimization attempt has started
- * \note p is locked when this callback is called
- * \param p The \ref ast_unreal_pvt object
- * \param source The channel that is optimizing into an unreal_pvt channel's bridge.
- * If NULL, the optimization is being accomplished via a bridge merge.
- * \param dest Indicator of which channel's bridge in the unreal_pvt will survive the
- * optimization
- * \param id Unique identifier for this optimization operation.
- */
- void (* const optimization_started)(struct ast_unreal_pvt *p, struct ast_channel *source,
- enum ast_unreal_channel_indicator dest, unsigned int id);
-
- /*!
- * \brief Called when an optimization attempt completed successfully
- * \note p is locked when this callback is called
- * \param p The \ref ast_unreal_pvt object
- * \param success Non-zero if the optimization succeeded, zero if the optimization
- * met with fatal and permanent error
- * \param id Unique identifier for this optimization. Same as the one from the optimization_started
- * call
- */
- void (* const optimization_finished)(struct ast_unreal_pvt *p, int success, unsigned int id);
-};
-
-/*!
* \brief The base pvt structure for local channel derivatives.
*
* The unreal pvt has two ast_chan objects - the "owner" and the "next channel", the outbound channel
@@ -89,7 +59,6 @@
* ast_chan owner -> ast_unreal_pvt -> ast_chan chan
*/
struct ast_unreal_pvt {
- struct ast_unreal_pvt_callbacks *callbacks; /*!< Event callbacks */
struct ast_channel *owner; /*!< Master Channel - ;1 side */
struct ast_channel *chan; /*!< Outbound channel - ;2 side */
struct ast_channel *bridged_owner; /*!< Master Channel - Bridged */
@@ -106,7 +75,6 @@
#define AST_UNREAL_CARETAKER_THREAD (1 << 0) /*!< The ;2 side launched a PBX, was pushed into a bridge, or was masqueraded into an application. */
#define AST_UNREAL_NO_OPTIMIZATION (1 << 1) /*!< Do not optimize out the unreal channels */
#define AST_UNREAL_MOH_INTERCEPT (1 << 2) /*!< Intercept and act on hold/unhold control frames */
-#define AST_UNREAL_OPTIMIZE_BEGUN (1 << 3) /*!< Indicates that an optimization attempt has been started */
/*!
* \brief Send an unreal pvt in with no locks held and get all locks
Modified: team/file/bridge_unreal/main/cel.c
URL: http://svnview.digium.com/svn/asterisk/team/file/bridge_unreal/main/cel.c?view=diff&rev=410304&r1=410303&r2=410304
==============================================================================
--- team/file/bridge_unreal/main/cel.c (original)
+++ team/file/bridge_unreal/main/cel.c Sat Mar 8 13:32:22 2014
@@ -1437,28 +1437,6 @@
ast_json_unref(extra);
}
-static void cel_local_cb(
- void *data, struct stasis_subscription *sub,
- struct stasis_message *message)
-{
- struct ast_multi_channel_blob *obj = stasis_message_data(message);
- struct ast_channel_snapshot *localone = ast_multi_channel_blob_get_channel(obj, "1");
- struct ast_channel_snapshot *localtwo = ast_multi_channel_blob_get_channel(obj, "2");
- struct ast_json *extra;
-
- if (!localone || !localtwo) {
- return;
- }
-
- extra = ast_json_pack("{s: s}", "local_two", localtwo->name);
- if (!extra) {
- return;
- }
-
- cel_report_event(localone, AST_CEL_LOCAL_OPTIMIZE, NULL, extra, NULL);
- ast_json_unref(extra);
-}
-
static void destroy_routes(void)
{
stasis_message_router_unsubscribe_and_join(cel_state_router);
@@ -1604,11 +1582,6 @@
cel_pickup_cb,
NULL);
- ret |= stasis_message_router_add(cel_state_router,
- ast_local_optimization_end_type(),
- cel_local_cb,
- NULL);
-
if (ret) {
ast_log(AST_LOG_ERROR, "Failed to register for Stasis messages\n");
}
Modified: team/file/bridge_unreal/main/core_local.c
URL: http://svnview.digium.com/svn/asterisk/team/file/bridge_unreal/main/core_local.c?view=diff&rev=410304&r1=410303&r2=410304
==============================================================================
--- team/file/bridge_unreal/main/core_local.c (original)
+++ team/file/bridge_unreal/main/core_local.c Sat Mar 8 13:32:22 2014
@@ -141,9 +141,6 @@
static int local_call(struct ast_channel *ast, const char *dest, int timeout);
static int local_hangup(struct ast_channel *ast);
static int local_devicestate(const char *data);
-static void local_optimization_started_cb(struct ast_unreal_pvt *base, struct ast_channel *source,
- enum ast_unreal_channel_indicator dest, unsigned int id);
-static void local_optimization_finished_cb(struct ast_unreal_pvt *base, int success, unsigned int id);
static struct ast_manager_event_blob *local_message_to_ami(struct stasis_message *msg);
@@ -153,19 +150,7 @@
STASIS_MESSAGE_TYPE_DEFN(ast_local_bridge_type,
.to_ami = local_message_to_ami,
);
-STASIS_MESSAGE_TYPE_DEFN(ast_local_optimization_begin_type,
- .to_ami = local_message_to_ami,
- );
-STASIS_MESSAGE_TYPE_DEFN(ast_local_optimization_end_type,
- .to_ami = local_message_to_ami,
- );
/*! @} */
-
-/*! \brief Callbacks from the unreal core when channel optimization occurs */
-struct ast_unreal_pvt_callbacks local_unreal_callbacks = {
- .optimization_started = local_optimization_started_cb,
- .optimization_finished = local_optimization_finished_cb,
-};
/* PBX interface structure for channel registration */
static struct ast_channel_tech local_tech = {
@@ -321,99 +306,6 @@
return res;
}
-static struct ast_multi_channel_blob *local_channel_optimization_blob(struct local_pvt *p,
- struct ast_json *json_object)
-{
- struct ast_multi_channel_blob *payload;
- RAII_VAR(struct ast_channel_snapshot *, local_one_snapshot, NULL, ao2_cleanup);
- RAII_VAR(struct ast_channel_snapshot *, local_two_snapshot, NULL, ao2_cleanup);
-
- local_one_snapshot = ast_channel_snapshot_create(p->base.owner);
- if (!local_one_snapshot) {
- return NULL;
- }
-
- local_two_snapshot = ast_channel_snapshot_create(p->base.chan);
- if (!local_two_snapshot) {
- return NULL;
- }
-
- payload = ast_multi_channel_blob_create(json_object);
- if (!payload) {
- return NULL;
- }
- ast_multi_channel_blob_add_channel(payload, "1", local_one_snapshot);
- ast_multi_channel_blob_add_channel(payload, "2", local_two_snapshot);
-
- return payload;
-}
-
-/*! \brief Callback for \ref ast_unreal_pvt_callbacks \ref optimization_started_cb */
-static void local_optimization_started_cb(struct ast_unreal_pvt *base, struct ast_channel *source,
- enum ast_unreal_channel_indicator dest, unsigned int id)
-{
- RAII_VAR(struct ast_json *, json_object, ast_json_null(), ast_json_unref);
- RAII_VAR(struct ast_multi_channel_blob *, payload, NULL, ao2_cleanup);
- RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
- struct local_pvt *p = (struct local_pvt *)base;
-
- json_object = ast_json_pack("{s: i, s: i}",
- "dest", dest, "id", id);
-
- if (!json_object) {
- return;
- }
-
- payload = local_channel_optimization_blob(p, json_object);
- if (!payload) {
- return;
- }
-
- if (source) {
- RAII_VAR(struct ast_channel_snapshot *, source_snapshot, NULL, ao2_cleanup);
- source_snapshot = ast_channel_snapshot_create(source);
- if (!source_snapshot) {
- return;
- }
-
- ast_multi_channel_blob_add_channel(payload, "source", source_snapshot);
- }
-
- msg = stasis_message_create(ast_local_optimization_begin_type(), payload);
- if (!msg) {
- return;
- }
-
- stasis_publish(ast_channel_topic(p->base.owner), msg);
-}
-
-/*! \brief Callback for \ref ast_unreal_pvt_callbacks \ref optimization_finished_cb */
-static void local_optimization_finished_cb(struct ast_unreal_pvt *base, int success, unsigned int id)
-{
- RAII_VAR(struct ast_json *, json_object, ast_json_null(), ast_json_unref);
- RAII_VAR(struct ast_multi_channel_blob *, payload, NULL, ao2_cleanup);
- RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
- struct local_pvt *p = (struct local_pvt *)base;
-
- json_object = ast_json_pack("{s: i, s: i}", "success", success, "id", id);
-
- if (!json_object) {
- return;
- }
-
- payload = local_channel_optimization_blob(p, json_object);
- if (!payload) {
- return;
- }
-
- msg = stasis_message_create(ast_local_optimization_end_type(), payload);
- if (!msg) {
- return;
- }
-
- stasis_publish(ast_channel_topic(p->base.owner), msg);
-}
-
static struct ast_manager_event_blob *local_message_to_ami(struct stasis_message *message)
{
struct ast_multi_channel_blob *obj = stasis_message_data(message);
@@ -438,33 +330,7 @@
return NULL;
}
- if (stasis_message_type(message) == ast_local_optimization_begin_type()) {
- struct ast_channel_snapshot *source_snapshot;
- RAII_VAR(struct ast_str *, source_str, NULL, ast_free);
- const char *dest_uniqueid;
-
- source_snapshot = ast_multi_channel_blob_get_channel(obj, "source");
- if (source_snapshot) {
- source_str = ast_manager_build_channel_state_string_prefix(source_snapshot, "Source");
- if (!source_str) {
- return NULL;
- }
- }
-
- dest_uniqueid = ast_json_object_get(blob, "dest") == AST_UNREAL_OWNER ?
- local_snapshot_one->uniqueid : local_snapshot_two->uniqueid;
-
- event = "LocalOptimizationBegin";
- if (source_str) {
- ast_str_append(&event_buffer, 0, "%s", ast_str_buffer(source_str));
- }
- ast_str_append(&event_buffer, 0, "DestUniqueId: %s\r\n", dest_uniqueid);
- ast_str_append(&event_buffer, 0, "Id: %u\r\n", (unsigned int) ast_json_integer_get(ast_json_object_get(blob, "id")));
- } else if (stasis_message_type(message) == ast_local_optimization_end_type()) {
- event = "LocalOptimizationEnd";
- ast_str_append(&event_buffer, 0, "Success: %s\r\n", ast_json_integer_get(ast_json_object_get(blob, "success")) ? "Yes" : "No");
- ast_str_append(&event_buffer, 0, "Id: %u\r\n", (unsigned int) ast_json_integer_get(ast_json_object_get(blob, "id")));
- } else if (stasis_message_type(message) == ast_local_bridge_type()) {
+ if (stasis_message_type(message) == ast_local_bridge_type()) {
event = "LocalBridge";
ast_str_append(&event_buffer, 0, "Context: %s\r\n", ast_json_string_get(ast_json_object_get(blob, "context")));
ast_str_append(&event_buffer, 0, "Exten: %s\r\n", ast_json_string_get(ast_json_object_get(blob, "exten")));
@@ -824,7 +690,6 @@
if (!pvt) {
return NULL;
}
- pvt->base.callbacks = &local_unreal_callbacks;
parse = ast_strdupa(data);
@@ -1010,22 +875,11 @@
ast_format_cap_destroy(local_tech.capabilities);
- STASIS_MESSAGE_TYPE_CLEANUP(ast_local_optimization_begin_type);
- STASIS_MESSAGE_TYPE_CLEANUP(ast_local_optimization_end_type);
STASIS_MESSAGE_TYPE_CLEANUP(ast_local_bridge_type);
}
int ast_local_init(void)
{
-
- if (STASIS_MESSAGE_TYPE_INIT(ast_local_optimization_begin_type)) {
- return -1;
- }
-
- if (STASIS_MESSAGE_TYPE_INIT(ast_local_optimization_end_type)) {
- return -1;
- }
-
if (STASIS_MESSAGE_TYPE_INIT(ast_local_bridge_type)) {
return -1;
}
More information about the asterisk-commits
mailing list