Asterisk - The Open Source Telephony Project GIT-master-f36a736
|
Bridging technology for storing channels in a bridge for the purpose of holding, parking, queues, and other such states where a channel may need to be in a bridge but not actually communicating with anything. More...
#include "asterisk.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/bridge.h"
#include "asterisk/bridge_technology.h"
#include "asterisk/frame.h"
#include "asterisk/musiconhold.h"
#include "asterisk/format_cache.h"
Go to the source code of this file.
Data Structures | |
struct | deferred_data |
struct | holding_channel |
Structure which contains per-channel role information. More... | |
Typedefs | |
typedef void(* | deferred_cb) (struct ast_bridge_channel *bridge_channel) |
Enumerations | |
enum | holding_roles { HOLDING_ROLE_PARTICIPANT , HOLDING_ROLE_ANNOUNCER } |
enum | idle_modes { IDLE_MODE_NONE , IDLE_MODE_MOH , IDLE_MODE_RINGING , IDLE_MODE_SILENCE , IDLE_MODE_HOLD } |
Functions | |
static void | __reg_module (void) |
static void | __unreg_module (void) |
struct ast_module * | AST_MODULE_SELF_SYM (void) |
static int | defer_action (struct ast_bridge_channel *bridge_channel, deferred_cb callback) |
static void | deferred_action (struct ast_bridge_channel *bridge_channel, const void *payload, size_t payload_size) |
static void | handle_participant_join (struct ast_bridge_channel *bridge_channel, struct ast_bridge_channel *announcer_channel) |
static int | holding_bridge_join (struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel) |
static void | holding_bridge_leave (struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel) |
static void | holding_bridge_suspend (struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel) |
static void | holding_bridge_unsuspend (struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel) |
static int | holding_bridge_write (struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, struct ast_frame *frame) |
static int | load_module (void) |
static void | participant_entertainment_start (struct ast_bridge_channel *bridge_channel) |
static void | participant_entertainment_stop (struct ast_bridge_channel *bridge_channel) |
static void | participant_idle_mode_setup (struct ast_bridge_channel *bridge_channel) |
static void | participant_reaction_announcer_join (struct ast_bridge_channel *bridge_channel) |
static void | participant_reaction_announcer_leave (struct ast_bridge_channel *bridge_channel) |
static int | unload_module (void) |
Variables | |
static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Holding bridge module" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, .support_level = AST_MODULE_SUPPORT_CORE, } |
static const struct ast_module_info * | ast_module_info = &__mod_info |
static struct ast_bridge_technology | holding_bridge |
Bridging technology for storing channels in a bridge for the purpose of holding, parking, queues, and other such states where a channel may need to be in a bridge but not actually communicating with anything.
Definition in file bridge_holding.c.
typedef void(* deferred_cb) (struct ast_bridge_channel *bridge_channel) |
Definition at line 73 of file bridge_holding.c.
enum holding_roles |
Enumerator | |
---|---|
HOLDING_ROLE_PARTICIPANT | |
HOLDING_ROLE_ANNOUNCER |
Definition at line 51 of file bridge_holding.c.
enum idle_modes |
Enumerator | |
---|---|
IDLE_MODE_NONE | |
IDLE_MODE_MOH | |
IDLE_MODE_RINGING | |
IDLE_MODE_SILENCE | |
IDLE_MODE_HOLD |
Definition at line 56 of file bridge_holding.c.
|
static |
Definition at line 442 of file bridge_holding.c.
|
static |
Definition at line 442 of file bridge_holding.c.
struct ast_module * AST_MODULE_SELF_SYM | ( | void | ) |
Definition at line 442 of file bridge_holding.c.
|
static |
Definition at line 93 of file bridge_holding.c.
References ast_bridge_channel_queue_callback(), ast_channel_name(), ast_log, ast_bridge_channel::bridge, deferred_data::callback, ast_bridge_channel::chan, deferred_action(), LOG_WARNING, and ast_bridge::uniqueid.
Referenced by handle_participant_join(), holding_bridge_join(), and holding_bridge_leave().
|
static |
Definition at line 412 of file bridge_holding.c.
References ast_bridge_channel_lock_bridge(), ast_bridge_unlock, ast_bridge_channel::bridge, deferred_data::callback, holding_bridge, ast_bridge_channel::tech_pvt, and ast_bridge::technology.
Referenced by defer_action(), and smart_bridge_operation().
|
static |
Definition at line 226 of file bridge_holding.c.
References ast_channel_name(), ast_format_slin, ast_log, ast_set_write_format(), ast_channel::bridge_channel, ast_bridge_channel::chan, defer_action(), LOG_WARNING, and participant_entertainment_start().
Referenced by holding_bridge_join().
|
static |
Definition at line 242 of file bridge_holding.c.
References ast_assert, ast_bridge_channel_has_role(), ast_calloc, ast_channel_name(), ast_format_slin, ast_free, AST_LIST_TRAVERSE, ast_log, ast_set_read_format(), ast_channel::bridge, ast_channel::bridge_channel, ast_bridge_channel::chan, ast_bridge::channels, defer_action(), handle_participant_join(), HOLDING_ROLE_ANNOUNCER, HOLDING_ROLE_PARTICIPANT, LOG_ERROR, LOG_WARNING, NULL, participant_reaction_announcer_join(), holding_channel::role, ast_bridge::tech_pvt, ast_bridge_channel::tech_pvt, and ast_bridge::uniqueid.
|
static |
Definition at line 301 of file bridge_holding.c.
References ast_free, AST_LIST_TRAVERSE, ast_bridge::channels, defer_action(), HOLDING_ROLE_ANNOUNCER, NULL, participant_entertainment_stop(), participant_reaction_announcer_leave(), holding_channel::role, ast_bridge::tech_pvt, and ast_bridge_channel::tech_pvt.
|
static |
Definition at line 352 of file bridge_holding.c.
References HOLDING_ROLE_PARTICIPANT, participant_entertainment_stop(), holding_channel::role, and ast_bridge_channel::tech_pvt.
|
static |
Definition at line 369 of file bridge_holding.c.
References ast_bridge_channel::bridge, HOLDING_ROLE_PARTICIPANT, participant_entertainment_start(), holding_channel::role, ast_bridge::tech_pvt, and ast_bridge_channel::tech_pvt.
|
static |
Definition at line 329 of file bridge_holding.c.
References ast_bridge_queue_everyone_else(), HOLDING_ROLE_ANNOUNCER, NULL, holding_channel::role, and ast_bridge_channel::tech_pvt.
|
static |
Definition at line 433 of file bridge_holding.c.
References ast_bridge_technology_register, AST_MODULE_LOAD_DECLINE, AST_MODULE_LOAD_SUCCESS, holding_bridge, and unload_module().
|
static |
Definition at line 186 of file bridge_holding.c.
References ast_assert, ast_bridge_channel_get_role_option(), ast_channel_start_silence_generator(), AST_CONTROL_HOLD, AST_CONTROL_RINGING, ast_indicate(), ast_indicate_data(), ast_log, ast_moh_start(), ast_bridge_channel::chan, holding_channel::entertainment_active, holding_channel::idle_mode, IDLE_MODE_HOLD, IDLE_MODE_MOH, IDLE_MODE_NONE, IDLE_MODE_RINGING, IDLE_MODE_SILENCE, LOG_WARNING, NULL, participant_idle_mode_setup(), holding_channel::silence_generator, and ast_bridge_channel::tech_pvt.
Referenced by handle_participant_join(), holding_bridge_unsuspend(), and participant_reaction_announcer_leave().
|
static |
Definition at line 141 of file bridge_holding.c.
References ast_assert, ast_channel_stop_silence_generator(), AST_CONTROL_UNHOLD, ast_indicate(), ast_moh_stop(), ast_bridge_channel::chan, holding_channel::entertainment_active, holding_channel::idle_mode, IDLE_MODE_HOLD, IDLE_MODE_MOH, IDLE_MODE_NONE, IDLE_MODE_RINGING, IDLE_MODE_SILENCE, NULL, holding_channel::silence_generator, and ast_bridge_channel::tech_pvt.
Referenced by holding_bridge_leave(), holding_bridge_suspend(), and participant_reaction_announcer_join().
|
static |
Definition at line 114 of file bridge_holding.c.
References ast_assert, ast_bridge_channel_get_role_option(), ast_channel_name(), ast_debug, ast_strlen_zero(), ast_bridge_channel::chan, holding_channel::idle_mode, IDLE_MODE_HOLD, IDLE_MODE_MOH, IDLE_MODE_NONE, IDLE_MODE_RINGING, IDLE_MODE_SILENCE, NULL, and ast_bridge_channel::tech_pvt.
Referenced by participant_entertainment_start().
|
static |
Definition at line 174 of file bridge_holding.c.
References ast_channel_name(), ast_format_slin, ast_log, ast_set_write_format(), ast_channel::bridge_channel, ast_bridge_channel::chan, LOG_WARNING, and participant_entertainment_stop().
Referenced by holding_bridge_join().
|
static |
Definition at line 295 of file bridge_holding.c.
References ast_bridge_channel_restore_formats(), ast_channel::bridge_channel, and participant_entertainment_start().
Referenced by holding_bridge_leave().
|
static |
Definition at line 427 of file bridge_holding.c.
References ast_bridge_technology_unregister(), and holding_bridge.
Referenced by load_module().
|
static |
Definition at line 442 of file bridge_holding.c.
|
static |
Definition at line 442 of file bridge_holding.c.
|
static |
Definition at line 392 of file bridge_holding.c.
Referenced by deferred_action(), load_module(), and unload_module().