Asterisk - The Open Source Telephony Project
18.5.0
|
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 = "30ef0c93b36035ec78c9cfd712d36d9b" , .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 446 of file bridge_holding.c.
|
static |
Definition at line 446 of file bridge_holding.c.
struct ast_module* AST_MODULE_SELF_SYM | ( | void | ) |
Definition at line 446 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 416 of file bridge_holding.c.
References ast_bridge_channel_lock_bridge(), ast_bridge_unlock, ast_bridge_channel::bridge, deferred_data::callback, ast_bridge_channel::tech_pvt, and ast_bridge::technology.
Referenced by defer_action(), and smart_bridge_operation().
|
static |
Definition at line 228 of file bridge_holding.c.
References ast_channel_name(), ast_format_slin, ast_log, ast_set_write_format(), ast_bridge_channel::chan, defer_action(), LOG_WARNING, and participant_entertainment_start().
Referenced by holding_bridge_join().
|
static |
Definition at line 244 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_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_channel::tech_pvt, ast_bridge::tech_pvt, and ast_bridge::uniqueid.
|
static |
Definition at line 303 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_channel::tech_pvt, and ast_bridge::tech_pvt.
|
static |
Definition at line 354 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 371 of file bridge_holding.c.
References HOLDING_ROLE_PARTICIPANT, participant_entertainment_start(), holding_channel::role, ast_bridge_channel::tech_pvt, and ast_bridge::tech_pvt.
|
static |
Definition at line 331 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 437 of file bridge_holding.c.
References ast_bridge_technology_register, AST_MODULE_LOAD_DECLINE, AST_MODULE_LOAD_SUCCESS, and unload_module().
|
static |
Definition at line 188 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 143 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 116 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 176 of file bridge_holding.c.
References ast_channel_name(), ast_format_slin, ast_log, ast_set_write_format(), ast_bridge_channel::chan, LOG_WARNING, and participant_entertainment_stop().
Referenced by holding_bridge_join().
|
static |
Definition at line 297 of file bridge_holding.c.
References ast_bridge_channel_restore_formats(), and participant_entertainment_start().
Referenced by holding_bridge_leave().
|
static |
Definition at line 431 of file bridge_holding.c.
References ast_bridge_technology_unregister().
Referenced by load_module().
|
static |
Definition at line 446 of file bridge_holding.c.
|
static |
Definition at line 446 of file bridge_holding.c.
|
static |
Definition at line 394 of file bridge_holding.c.