mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-11 23:28:59 +00:00
Move after bridge callbacks into their own file
One more major refactoring to go. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@395367 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -43,6 +43,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
||||
#include "asterisk/bridging.h"
|
||||
#include "asterisk/bridging_internal.h"
|
||||
#include "asterisk/bridging_basic.h"
|
||||
#include "asterisk/bridging_after.h"
|
||||
#include "asterisk/config_options.h"
|
||||
#include "asterisk/features_config.h"
|
||||
#include "asterisk/astobj2.h"
|
||||
@@ -1055,7 +1056,7 @@ static void agent_connect_caller(struct ast_bridge_channel *bridge_channel, stru
|
||||
|
||||
if (!caller_bridge) {
|
||||
/* Reset agent. */
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, AST_BRIDGE_CHANNEL_STATE_END);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, BRIDGE_CHANNEL_STATE_END);
|
||||
return;
|
||||
}
|
||||
res = ast_bridge_move(caller_bridge, bridge_channel->bridge, bridge_channel->chan,
|
||||
@@ -1063,7 +1064,7 @@ static void agent_connect_caller(struct ast_bridge_channel *bridge_channel, stru
|
||||
if (res) {
|
||||
/* Reset agent. */
|
||||
ast_bridge_destroy(caller_bridge);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, AST_BRIDGE_CHANNEL_STATE_END);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, BRIDGE_CHANNEL_STATE_END);
|
||||
return;
|
||||
}
|
||||
ast_bridge_channel_write_control_data(bridge_channel, AST_CONTROL_ANSWER, NULL, 0);
|
||||
@@ -1159,13 +1160,13 @@ static int bridge_agent_hold_heartbeat(struct ast_bridge *bridge, struct ast_bri
|
||||
|
||||
if (deferred_logoff) {
|
||||
ast_debug(1, "Agent %s: Deferred logoff.\n", agent->username);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, AST_BRIDGE_CHANNEL_STATE_END);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, BRIDGE_CHANNEL_STATE_END);
|
||||
} else if (probation_timedout) {
|
||||
ast_debug(1, "Agent %s: Login complete.\n", agent->username);
|
||||
agent_devstate_changed(agent->username);
|
||||
} else if (ack_timedout) {
|
||||
ast_debug(1, "Agent %s: Ack call timeout.\n", agent->username);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, AST_BRIDGE_CHANNEL_STATE_END);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, BRIDGE_CHANNEL_STATE_END);
|
||||
} else if (wrapup_timedout) {
|
||||
ast_debug(1, "Agent %s: Wrapup timeout. Ready for new call.\n", agent->username);
|
||||
agent_devstate_changed(agent->username);
|
||||
@@ -1175,7 +1176,7 @@ static int bridge_agent_hold_heartbeat(struct ast_bridge *bridge, struct ast_bri
|
||||
}
|
||||
|
||||
static void agent_after_bridge_cb(struct ast_channel *chan, void *data);
|
||||
static void agent_after_bridge_cb_failed(enum ast_after_bridge_cb_reason reason, void *data);
|
||||
static void agent_after_bridge_cb_failed(enum ast_bridge_after_cb_reason reason, void *data);
|
||||
|
||||
/*!
|
||||
* \internal
|
||||
@@ -1252,7 +1253,7 @@ static int bridge_agent_hold_push(struct ast_bridge *self, struct ast_bridge_cha
|
||||
}
|
||||
|
||||
if (swap) {
|
||||
res = ast_after_bridge_callback_set(chan, agent_after_bridge_cb,
|
||||
res = ast_bridge_set_after_callback(chan, agent_after_bridge_cb,
|
||||
agent_after_bridge_cb_failed, chan);
|
||||
if (res) {
|
||||
ast_channel_remove_bridge_role(chan, "holding_participant");
|
||||
@@ -1270,7 +1271,7 @@ static int bridge_agent_hold_push(struct ast_bridge *self, struct ast_bridge_cha
|
||||
* agent will have some slightly different behavior in corner
|
||||
* cases.
|
||||
*/
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, AST_BRIDGE_CHANNEL_STATE_END);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, BRIDGE_CHANNEL_STATE_END);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1620,7 +1621,7 @@ static void agent_after_bridge_cb(struct ast_channel *chan, void *data)
|
||||
ao2_ref(agent, -1);
|
||||
}
|
||||
|
||||
static void agent_after_bridge_cb_failed(enum ast_after_bridge_cb_reason reason, void *data)
|
||||
static void agent_after_bridge_cb_failed(enum ast_bridge_after_cb_reason reason, void *data)
|
||||
{
|
||||
struct ast_channel *chan = data;
|
||||
struct agent_pvt *agent;
|
||||
@@ -1631,7 +1632,7 @@ static void agent_after_bridge_cb_failed(enum ast_after_bridge_cb_reason reason,
|
||||
}
|
||||
ast_log(LOG_WARNING, "Agent %s: Forced logout. Lost control of %s because: %s\n",
|
||||
agent->username, ast_channel_name(chan),
|
||||
ast_after_bridge_cb_reason_string(reason));
|
||||
ast_bridge_after_cb_reason_string(reason));
|
||||
agent_lock(agent);
|
||||
agent_logout(agent);
|
||||
ao2_ref(agent, -1);
|
||||
@@ -1704,7 +1705,7 @@ static void caller_abort_agent(struct agent_pvt *agent)
|
||||
}
|
||||
|
||||
/* Kick the agent out of the holding bridge to reset it. */
|
||||
ast_bridge_channel_leave_bridge_nolock(logged, AST_BRIDGE_CHANNEL_STATE_END);
|
||||
ast_bridge_channel_leave_bridge_nolock(logged, BRIDGE_CHANNEL_STATE_END);
|
||||
ast_bridge_channel_unlock(logged);
|
||||
}
|
||||
|
||||
@@ -1714,7 +1715,7 @@ static int caller_safety_timeout(struct ast_bridge *bridge, struct ast_bridge_ch
|
||||
|
||||
if (agent->state == AGENT_STATE_CALL_PRESENT) {
|
||||
ast_verb(3, "Agent '%s' did not respond. Safety timeout.\n", agent->username);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, AST_BRIDGE_CHANNEL_STATE_END);
|
||||
ast_bridge_channel_leave_bridge(bridge_channel, BRIDGE_CHANNEL_STATE_END);
|
||||
caller_abort_agent(agent);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user