Asterisk - The Open Source Telephony Project GIT-master-f36a736
|
Routines implementing music on hold. More...
#include "asterisk.h"
#include <ctype.h>
#include <signal.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <sys/stat.h>
#include <dirent.h>
#include "asterisk/lock.h"
#include "asterisk/file.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/app.h"
#include "asterisk/module.h"
#include "asterisk/translate.h"
#include "asterisk/say.h"
#include "asterisk/musiconhold.h"
#include "asterisk/config.h"
#include "asterisk/utils.h"
#include "asterisk/cli.h"
#include "asterisk/stringfields.h"
#include "asterisk/linkedlists.h"
#include "asterisk/stasis.h"
#include "asterisk/stasis_channels.h"
#include "asterisk/paths.h"
#include "asterisk/astobj2.h"
#include "asterisk/timing.h"
#include "asterisk/time.h"
#include "asterisk/poll-compat.h"
Go to the source code of this file.
Data Structures | |
struct | moh_files_state |
struct | mohclass |
struct | mohdata |
Macros | |
#define | DONT_UNREF 0 |
#define | get_mohbyname(a, b, c) _get_mohbyname(a,b,c,__FILE__,__LINE__,__PRETTY_FUNCTION__) |
#define | HANDLE_REF 1 |
#define | INITIAL_NUM_FILES 8 |
#define | LOCAL_MPG_123 "/usr/local/bin/mpg123" |
#define | MAX_MP3S 256 |
#define | MOH_ANNOUNCEMENT (1 << 6) |
#define | MOH_CACHERTCLASSES (1 << 5) |
#define | moh_class_malloc() _moh_class_malloc(__FILE__,__LINE__,__PRETTY_FUNCTION__) |
#define | MOH_CUSTOM (1 << 2) |
#define | MOH_LOOPLAST (1 << 8) |
#define | MOH_MS_INTERVAL 100 |
#define | MOH_NOTDELETED (1 << 30) |
#define | MOH_PREFERCHANNELCLASS (1 << 7) |
#define | MOH_QUIET (1 << 0) |
#define | MOH_RANDOMIZE (1 << 3) |
#define | MOH_RANDSTART (MOH_RANDOMIZE | MOH_SORTALPHA) |
#define | MOH_REALTIME (1 << 31) |
#define | moh_register(moh, reload, unref) _moh_register(moh, reload, unref, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
#define | MOH_SINGLE (1 << 1) |
#define | MOH_SORTALPHA (1 << 4) |
#define | MOH_SORTMODE (3 << 3) |
#define | moh_unregister(a) _moh_unregister(a,__FILE__,__LINE__,__PRETTY_FUNCTION__) |
#define | mohclass_ref(class, string) (ao2_t_ref((class), +1, (string)), class) |
#define | mohclass_unref(class, string) ({ ao2_t_ref((class), -1, (string)); (struct mohclass *) NULL; }) |
#define | MPG_123 "/usr/bin/mpg123" |
Enumerations | |
enum | kill_methods { KILL_METHOD_PROCESS_GROUP = 0 , KILL_METHOD_PROCESS } |
Functions | |
static void | __reg_module (void) |
static void | __unreg_module (void) |
static struct mohclass * | _get_mohbyname (const char *name, int warn, int flags, const char *file, int lineno, const char *funcname) |
static struct mohclass * | _moh_class_malloc (const char *file, int line, const char *funcname) |
static int | _moh_register (struct mohclass *moh, int reload, int unref, const char *file, int line, const char *funcname) |
static int | _moh_unregister (struct mohclass *moh, const char *file, int line, const char *funcname) |
struct ast_module * | AST_MODULE_SELF_SYM (void) |
static void | ast_moh_destroy (void) |
static int | ast_moh_files_next (struct ast_channel *chan) |
static char * | complete_mohclass_realtime (const char *line, const char *word, int pos, int state) |
Support routing for 'moh unregister class' CLI This is in charge of generating all strings that match a prefix in the given position. As many functions of this kind, each invokation has O(state) time complexity so be careful in using it. More... | |
static struct mohclass * | get_mohbydigit (char digit) |
static char * | handle_cli_moh_reload (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static char * | handle_cli_moh_show_classes (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static char * | handle_cli_moh_show_files (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static char * | handle_cli_moh_unregister_class (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static int | init_app_class (struct mohclass *class) |
static int | init_files_class (struct mohclass *class) |
static int | killer (pid_t pid, int signum, enum kill_methods kill_method) |
static void | killpid (int pid, size_t delay, enum kill_methods kill_method) |
static int | load_module (void) |
Load the module. More... | |
static int | load_moh_classes (int reload) |
static struct ast_variable * | load_realtime_musiconhold (const char *name) |
static void | local_ast_moh_cleanup (struct ast_channel *chan) |
static int | local_ast_moh_start (struct ast_channel *chan, const char *mclass, const char *interpclass) |
static void | local_ast_moh_stop (struct ast_channel *chan) |
static void * | moh_alloc (struct ast_channel *chan, void *params) |
static int | moh_class_cmp (void *obj, void *arg, int flags) |
static void | moh_class_destructor (void *obj) |
static int | moh_class_hash (const void *obj, const int flags) |
static int | moh_class_inuse (void *obj, void *arg, int flags) |
static int | moh_class_mark (void *obj, void *arg, int flags) |
static int | moh_classes_delete_marked (void *obj, void *arg, int flags) |
static int | moh_diff (struct mohclass *old, struct mohclass *new) |
static int | moh_digit_match (void *obj, void *arg, int flags) |
static struct ast_vector_string * | moh_file_vector_alloc (int initial_capacity) |
static void | moh_file_vector_destructor (void *obj) |
static int | moh_filename_strcasecmp (const void *a, const void *b) |
static void * | moh_files_alloc (struct ast_channel *chan, void *params) |
static int | moh_files_generator (struct ast_channel *chan, void *data, int len, int samples) |
static struct ast_frame * | moh_files_readframe (struct ast_channel *chan) |
static void | moh_files_release (struct ast_channel *chan, void *data) |
static void | moh_files_write_format_change (struct ast_channel *chan, void *data) |
static int | moh_generate (struct ast_channel *chan, void *data, int len, int samples) |
static void | moh_handle_digit (struct ast_channel *chan, char digit) |
static void | moh_parse_options (struct ast_variable *var, struct mohclass *mohclass) |
static void | moh_post_start (struct ast_channel *chan, const char *moh_class_name) |
static void | moh_post_stop (struct ast_channel *chan) |
static void | moh_release (struct ast_channel *chan, void *data) |
static void | moh_rescan_files (void) |
static int | moh_scan_files (struct mohclass *class) |
static struct mohdata * | mohalloc (struct mohclass *cl) |
static void * | monmp3thread (void *data) |
static int | on_moh_file (const char *directory, const char *filename, void *obj) |
static int | play_moh_exec (struct ast_channel *chan, const char *data) |
static int | reload (void) |
static int | spawn_mp3 (struct mohclass *class) |
static int | start_moh_exec (struct ast_channel *chan, const char *data) |
static int | stop_moh_exec (struct ast_channel *chan, const char *data) |
static int | unload_module (void) |
Variables | |
static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Music On Hold Resource" , .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, .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, .reload = reload, .load_pri = AST_MODPRI_CHANNEL_DEPEND, } |
static const struct ast_module_info * | ast_module_info = &__mod_info |
static struct ast_cli_entry | cli_moh [] |
static struct ast_flags | global_flags [1] = {{0}} |
static struct ast_generator | moh_file_stream |
static struct ao2_container * | mohclasses |
static struct ast_generator | mohgen |
static const char | play_moh [] = "MusicOnHold" |
static int | respawn_time = 20 |
static const char | start_moh [] = "StartMusicOnHold" |
static const char | stop_moh [] = "StopMusicOnHold" |
Routines implementing music on hold.
Definition in file res_musiconhold.c.
#define DONT_UNREF 0 |
Definition at line 78 of file res_musiconhold.c.
Definition at line 953 of file res_musiconhold.c.
#define HANDLE_REF 1 |
Definition at line 77 of file res_musiconhold.c.
#define INITIAL_NUM_FILES 8 |
Definition at line 76 of file res_musiconhold.c.
#define LOCAL_MPG_123 "/usr/local/bin/mpg123" |
Definition at line 212 of file res_musiconhold.c.
#define MAX_MP3S 256 |
Definition at line 214 of file res_musiconhold.c.
#define MOH_ANNOUNCEMENT (1 << 6) |
Do we play announcement files between songs on this channel?
Definition at line 153 of file res_musiconhold.c.
#define MOH_CACHERTCLASSES (1 << 5) |
Should we use a separate instance of MOH for each user or not
Definition at line 152 of file res_musiconhold.c.
#define moh_class_malloc | ( | ) | _moh_class_malloc(__FILE__,__LINE__,__PRETTY_FUNCTION__) |
Definition at line 1610 of file res_musiconhold.c.
#define MOH_CUSTOM (1 << 2) |
Definition at line 146 of file res_musiconhold.c.
#define MOH_LOOPLAST (1 << 8) |
Whether to loop the last file in the music class when we reach the end, rather than starting over
Definition at line 156 of file res_musiconhold.c.
#define MOH_MS_INTERVAL 100 |
#define MOH_NOTDELETED (1 << 30) |
Find only records that aren't deleted?
Definition at line 159 of file res_musiconhold.c.
#define MOH_PREFERCHANNELCLASS (1 << 7) |
Should queue moh override channel moh
Definition at line 154 of file res_musiconhold.c.
#define MOH_QUIET (1 << 0) |
Definition at line 144 of file res_musiconhold.c.
#define MOH_RANDOMIZE (1 << 3) |
Definition at line 147 of file res_musiconhold.c.
#define MOH_RANDSTART (MOH_RANDOMIZE | MOH_SORTALPHA) |
Sorted but start at random position
Definition at line 149 of file res_musiconhold.c.
#define MOH_REALTIME (1 << 31) |
Find only records that are realtime
Definition at line 160 of file res_musiconhold.c.
#define moh_register | ( | moh, | |
reload, | |||
unref | |||
) | _moh_register(moh, reload, unref, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
Definition at line 1437 of file res_musiconhold.c.
#define MOH_SINGLE (1 << 1) |
Definition at line 145 of file res_musiconhold.c.
#define MOH_SORTALPHA (1 << 4) |
Definition at line 148 of file res_musiconhold.c.
#define MOH_SORTMODE (3 << 3) |
Definition at line 150 of file res_musiconhold.c.
#define moh_unregister | ( | a | ) | _moh_unregister(a,__FILE__,__LINE__,__PRETTY_FUNCTION__) |
Definition at line 1505 of file res_musiconhold.c.
Definition at line 219 of file res_musiconhold.c.
#define mohclass_unref | ( | class, | |
string | |||
) | ({ ao2_t_ref((class), -1, (string)); (struct mohclass *) NULL; }) |
Definition at line 222 of file res_musiconhold.c.
#define MPG_123 "/usr/bin/mpg123" |
Definition at line 213 of file res_musiconhold.c.
enum kill_methods |
Enumerator | |
---|---|
KILL_METHOD_PROCESS_GROUP | |
KILL_METHOD_PROCESS |
Definition at line 164 of file res_musiconhold.c.
|
static |
Definition at line 2330 of file res_musiconhold.c.
|
static |
Definition at line 2330 of file res_musiconhold.c.
|
static |
Definition at line 955 of file res_musiconhold.c.
References __ao2_find(), ast_copy_string(), ast_log, make_ari_stubs::file, mohclass::flags, LOG_WARNING, mohclasses, name, mohclass::name, and NULL.
Referenced by _moh_register().
|
static |
Definition at line 1612 of file res_musiconhold.c.
References __ao2_alloc(), AO2_ALLOC_OPT_LOCK_MUTEX, ao2_bump, ao2_ref, ast_format_slin, make_ari_stubs::file, moh_class_destructor(), moh_file_vector_alloc(), and NULL.
|
static |
Definition at line 1438 of file res_musiconhold.c.
References _get_mohbyname(), ao2_lock, ao2_t_link, ao2_unlock, ast_log, AST_VECTOR_SIZE, make_ari_stubs::file, mohclass::files, init_app_class(), init_files_class(), LOG_WARNING, mohclass::mode, moh_diff(), MOH_NOTDELETED, mohclass_unref, mohclasses, mohclass::name, NULL, respawn_time, and mohclass::start.
|
static |
Definition at line 1506 of file res_musiconhold.c.
References ao2_t_unlink, and mohclasses.
struct ast_module * AST_MODULE_SELF_SYM | ( | void | ) |
Definition at line 2330 of file res_musiconhold.c.
|
static |
Definition at line 2098 of file res_musiconhold.c.
References ao2_ref, ao2_t_callback, ast_verb, mohclasses, NULL, OBJ_MULTIPLE, OBJ_NODATA, and OBJ_UNLINK.
Referenced by load_module(), and unload_module().
|
static |
Definition at line 317 of file res_musiconhold.c.
References ao2_bump, ao2_lock, ao2_ref, ao2_unlock, ast_channel_language(), ast_channel_music_state(), ast_channel_name(), ast_channel_stream(), ast_channel_stream_set(), ast_closestream(), ast_copy_string(), ast_debug, ast_fileexists(), ast_log, ast_openstream_full(), ast_random(), ast_seekstream(), ast_strlen_zero(), ast_tellstream(), ast_test_flag, AST_VECTOR_GET, AST_VECTOR_SIZE, errno, LOG_WARNING, MIN, MOH_ANNOUNCEMENT, MOH_LOOPLAST, MOH_RANDOMIZE, MOH_SORTMODE, state::name, and NULL.
Referenced by moh_files_readframe().
|
static |
Support routing for 'moh unregister class' CLI This is in charge of generating all strings that match a prefix in the given position. As many functions of this kind, each invokation has O(state) time complexity so be careful in using it.
Definition at line 1537 of file res_musiconhold.c.
References ao2_iterator_destroy(), ao2_iterator_init(), ao2_t_iterator_next, ast_strdup, c, mohclass_unref, mohclasses, mohclass::name, NULL, and mohclass::realtime.
Referenced by handle_cli_moh_unregister_class().
|
static |
Definition at line 576 of file res_musiconhold.c.
References ao2_t_callback, digit, moh_digit_match(), and mohclasses.
Referenced by moh_handle_digit().
|
static |
Definition at line 2108 of file res_musiconhold.c.
References a, ast_cli_entry::args, ast_module_reload(), CLI_GENERATE, CLI_INIT, CLI_SHOWUSAGE, CLI_SUCCESS, ast_cli_entry::command, NULL, and ast_cli_entry::usage.
|
static |
Definition at line 2174 of file res_musiconhold.c.
References a, ao2_iterator_destroy(), ao2_iterator_init(), ao2_t_iterator_next, ast_cli_entry::args, ast_cli(), ast_format_get_name(), ast_test_flag, CLI_GENERATE, CLI_INIT, CLI_SHOWUSAGE, CLI_SUCCESS, ast_cli_entry::command, KILL_METHOD_PROCESS, MOH_ANNOUNCEMENT, MOH_CUSTOM, mohclass_unref, mohclasses, test_val::name, NULL, S_OR, and ast_cli_entry::usage.
|
static |
Definition at line 2131 of file res_musiconhold.c.
References a, ao2_bump, ao2_iterator_destroy(), ao2_iterator_init(), ao2_lock, ao2_ref, ao2_t_iterator_next, ao2_unlock, ast_cli_entry::args, ast_cli(), AST_VECTOR_GET, AST_VECTOR_SIZE, CLI_GENERATE, CLI_INIT, CLI_SHOWUSAGE, CLI_SUCCESS, ast_cli_entry::command, mohclass_unref, mohclasses, test_val::name, NULL, and ast_cli_entry::usage.
|
static |
Definition at line 1563 of file res_musiconhold.c.
References a, ao2_iterator_destroy(), ao2_iterator_init(), ao2_t_iterator_next, ast_cli(), CLI_GENERATE, CLI_INIT, CLI_SHOWUSAGE, CLI_SUCCESS, ast_cli_entry::command, complete_mohclass_realtime(), len(), moh_unregister, mohclass_unref, mohclasses, mohclass::name, NULL, mohclass::realtime, and ast_cli_entry::usage.
|
static |
Definition at line 1398 of file res_musiconhold.c.
References ast_log, ast_pthread_create_background, ast_set_flag, ast_timer_close(), ast_timer_open(), ast_timer_set_rate(), errno, LOG_WARNING, MOH_CUSTOM, MOH_QUIET, MOH_SINGLE, monmp3thread(), and NULL.
Referenced by _moh_register().
|
static |
Definition at line 1344 of file res_musiconhold.c.
References ast_verb, and moh_scan_files().
Referenced by _moh_register().
|
static |
Definition at line 744 of file res_musiconhold.c.
References KILL_METHOD_PROCESS, and KILL_METHOD_PROCESS_GROUP.
Referenced by killpid().
|
static |
Definition at line 756 of file res_musiconhold.c.
References ast_debug, ast_log, errno, KILL_METHOD_PROCESS_GROUP, killer(), and LOG_WARNING.
Referenced by moh_class_destructor(), and monmp3thread().
|
static |
Load the module.
Module loading including tests for configuration or dependencies. This function can return AST_MODULE_LOAD_FAILURE, AST_MODULE_LOAD_DECLINE, or AST_MODULE_LOAD_SUCCESS. If a dependency or environment variable fails tests return AST_MODULE_LOAD_FAILURE. If the module can not load the configuration file or other non-critical problem return AST_MODULE_LOAD_DECLINE. On success return AST_MODULE_LOAD_SUCCESS.
Definition at line 2249 of file res_musiconhold.c.
References AO2_ALLOC_OPT_LOCK_MUTEX, ao2_t_container_alloc_hash, ARRAY_LEN, ast_check_realtime(), ast_cli_register_multiple, ast_install_music_functions(), ast_log, AST_MODULE_LOAD_DECLINE, AST_MODULE_LOAD_SUCCESS, ast_moh_destroy(), ast_register_application_xml, ast_register_atexit(), cli_moh, load_moh_classes(), local_ast_moh_cleanup(), local_ast_moh_start(), local_ast_moh_stop(), LOG_WARNING, moh_class_cmp(), moh_class_hash(), mohclasses, NULL, play_moh, play_moh_exec(), start_moh, start_moh_exec(), stop_moh, and stop_moh_exec().
|
static |
Definition at line 2004 of file res_musiconhold.c.
References ao2_t_callback, app, ast_category_browse(), ast_check_realtime(), ast_clear_flag, ast_config_destroy(), ast_config_load, ast_copy_string(), AST_FLAGS_ALL, ast_log, ast_set2_flag, ast_strlen_zero(), ast_true(), ast_variable_browse(), CONFIG_FLAG_FILEUNCHANGED, CONFIG_STATUS_FILEINVALID, CONFIG_STATUS_FILEMISSING, CONFIG_STATUS_FILEUNCHANGED, global_flags, HANDLE_REF, LOG_WARNING, MOH_CACHERTCLASSES, moh_class_malloc, moh_class_mark(), moh_classes_delete_marked(), moh_parse_options(), MOH_PREFERCHANNELCLASS, MOH_REALTIME, moh_register, moh_rescan_files(), mohclass_unref, mohclasses, NULL, OBJ_MULTIPLE, OBJ_NODATA, OBJ_UNLINK, reload(), and var.
Referenced by load_module(), and reload().
|
static |
Definition at line 1634 of file res_musiconhold.c.
References ast_category_browse(), ast_config_destroy(), ast_load_realtime(), ast_load_realtime_multientry(), ast_log, ast_strings_equal(), ast_variable_find_in_list(), ast_variable_list_append, ast_variable_new, ast_variable_retrieve(), ast_variables_destroy(), LOG_WARNING, name, NULL, SENTINEL, and var.
Referenced by local_ast_moh_start().
|
static |
Definition at line 1512 of file res_musiconhold.c.
References ao2_cleanup, ast_channel_music_state(), ast_channel_music_state_set(), ast_free, ast_log, ast_module_unref, LOG_WARNING, mohclass_unref, NULL, and ast_module_info::self.
Referenced by load_module(), and reload().
|
static |
Definition at line 1678 of file res_musiconhold.c.
References mohclass::answeredonly, ao2_lock, ao2_unlock, mohclass::args, ARRAY_LEN, ast_activate_generator(), ast_channel_flags(), ast_channel_lock, ast_channel_music_state(), ast_channel_musicclass(), ast_channel_name(), ast_channel_unlock, ast_check_realtime(), AST_FLAG_MOH, ast_log, ast_pthread_create_background, ast_set_flag, AST_STATE_UP, ast_strlen_zero(), ast_test_flag, ast_timer_close(), ast_timer_open(), ast_timer_set_rate(), ast_variables_destroy(), AST_VECTOR_SIZE, ast_verb, mohclass::dir, DONT_UNREF, errno, mohclass::files, get_mohbyname, global_flags, load_realtime_musiconhold(), LOG_NOTICE, LOG_WARNING, mohclass::mode, MOH_CACHERTCLASSES, moh_class_malloc, MOH_CUSTOM, moh_file_stream, moh_parse_options(), MOH_PREFERCHANNELCLASS, MOH_QUIET, MOH_RANDOMIZE, moh_register, moh_scan_files(), MOH_SINGLE, mohclass_ref, mohclass_unref, mohgen, monmp3thread(), mohclass::name, state::name, NULL, mohclass::realtime, respawn_time, mohclass::srcfd, mohclass::start, mohclass::thread, mohclass::timer, and var.
Referenced by load_module(), and reload().
|
static |
Definition at line 1910 of file res_musiconhold.c.
References ast_channel_flags(), ast_channel_lock, ast_channel_music_state(), ast_channel_stream(), ast_channel_stream_set(), ast_channel_unlock, ast_clear_flag, ast_closestream(), ast_deactivate_generator(), AST_FLAG_MOH, and NULL.
Referenced by load_module(), and reload().
|
static |
Definition at line 1037 of file res_musiconhold.c.
References ao2_bump, ao2_cleanup, ast_calloc, ast_channel_music_state(), ast_channel_music_state_set(), ast_channel_name(), ast_channel_writeformat(), ast_format_get_name(), ast_log, ast_module_ref, ast_set_write_format(), moh_files_state::class, mohclass::format, LOG_WARNING, moh_post_start(), moh_release(), mohalloc(), mohclass_ref, mohclass_unref, mohclass::name, NULL, mohdata::origwfmt, ast_module_info::self, and state.
|
static |
Definition at line 2230 of file res_musiconhold.c.
References CMP_MATCH, CMP_STOP, and MOH_NOTDELETED.
Referenced by load_module().
|
static |
Definition at line 1925 of file res_musiconhold.c.
References ao2_cleanup, ao2_lock, ao2_unlock, ast_debug, ast_free, AST_LIST_REMOVE_HEAD, AST_PTHREADT_NULL, ast_timer_close(), ast_wait_for_input(), buff, killpid(), mohdata::list, and NULL.
Referenced by _moh_class_malloc().
|
static |
Definition at line 2223 of file res_musiconhold.c.
References ast_str_case_hash().
Referenced by load_module().
|
static |
Definition at line 2288 of file res_musiconhold.c.
References AST_LIST_EMPTY, CMP_MATCH, and CMP_STOP.
Referenced by unload_module().
|
static |
Definition at line 1986 of file res_musiconhold.c.
References mohclass::delete, and MOH_REALTIME.
Referenced by load_moh_classes().
|
static |
Definition at line 1997 of file res_musiconhold.c.
References CMP_MATCH, and mohclass::delete.
Referenced by load_moh_classes().
Definition at line 1379 of file res_musiconhold.c.
References mohclass::args, mohclass::dir, mohclass::flags, and mohclass::mode.
Referenced by _moh_register().
|
static |
|
static |
Definition at line 1118 of file res_musiconhold.c.
References AO2_ALLOC_OPT_LOCK_NOLOCK, ao2_alloc_options, AST_VECTOR_INIT, and moh_file_vector_destructor().
Referenced by _moh_class_malloc(), moh_parse_options(), and moh_scan_files().
|
static |
Definition at line 1111 of file res_musiconhold.c.
References ast_free, AST_VECTOR_FREE, and AST_VECTOR_RESET.
Referenced by moh_file_vector_alloc().
|
static |
Definition at line 1299 of file res_musiconhold.c.
Referenced by moh_scan_files().
|
static |
Definition at line 519 of file res_musiconhold.c.
References ao2_cleanup, ao2_lock, ao2_replace, ao2_unlock, ast_calloc, ast_channel_music_state(), ast_channel_music_state_set(), ast_channel_writeformat(), ast_copy_string(), ast_log, ast_module_ref, ast_random(), ast_test_flag, AST_VECTOR_SIZE, LOG_WARNING, moh_post_start(), MOH_RANDOMIZE, mohclass_ref, mohclass_unref, ast_channel::name, state::name, NULL, ast_module_info::self, and state.
|
static |
Definition at line 465 of file res_musiconhold.c.
References ao2_replace, ast_channel_lock, ast_channel_music_state(), ast_channel_name(), ast_channel_unlock, ast_format_cmp(), AST_FORMAT_CMP_NOT_EQUAL, ast_frfree, ast_log, ast_write(), errno, ast_frame_subclass::format, LOG_WARNING, moh_files_readframe(), NULL, ast_frame::samples, state, and ast_frame::subclass.
|
static |
Definition at line 417 of file res_musiconhold.c.
References ast_channel_stream(), ast_moh_files_next(), and ast_readframe().
Referenced by moh_files_generator().
|
static |
Definition at line 285 of file res_musiconhold.c.
References ao2_cleanup, ao2_ref, ast_channel_music_state(), ast_channel_name(), ast_channel_stream(), ast_channel_stream_set(), ast_closestream(), ast_format_get_name(), ast_log, ast_set_write_format(), LOG_WARNING, moh_post_stop(), mohclass_unref, NULL, and state.
|
static |
Definition at line 446 of file res_musiconhold.c.
References ao2_bump, ao2_replace, ast_channel_music_state(), ast_channel_writeformat(), ast_set_write_format(), NULL, and tmp().
|
static |
Definition at line 1076 of file res_musiconhold.c.
References ast_channel_name(), ast_codec_samples_count(), ast_format_determine_length(), AST_FRIENDLY_OFFSET, ast_log, ast_write(), buf, ast_frame::data, ast_frame::datalen, errno, mohdata::f, mohclass::format, len(), LOG_WARNING, mohdata::parent, mohdata::pipe, ast_frame::ptr, and ast_frame::samples.
|
static |
Definition at line 581 of file res_musiconhold.c.
References ao2_find, ast_moh_start(), ast_moh_stop(), ast_strdupa, digit, get_mohbydigit(), mohclass_unref, and NULL.
|
static |
Definition at line 1130 of file res_musiconhold.c.
References mohclass::announcement, mohclass::answeredonly, ao2_bump, ao2_cleanup, ao2_ref, mohclass::args, ast_begins_with(), ast_clear_flag, ast_copy_string(), ast_format_cache_get, ast_format_slin, ast_log, ast_set2_flag, ast_set_flag, ast_strdup, ast_strlen_zero(), ast_true(), AST_VECTOR_APPEND, AST_VECTOR_COMPACT, mohclass::digit, mohclass::dir, mohclass::files, mohclass::format, mohclass::kill_delay, mohclass::kill_method, KILL_METHOD_PROCESS, KILL_METHOD_PROCESS_GROUP, LOG_ERROR, LOG_NOTICE, LOG_WARNING, mohclass::mode, MOH_ANNOUNCEMENT, moh_file_vector_alloc(), MOH_LOOPLAST, MOH_RANDOMIZE, MOH_RANDSTART, MOH_SORTALPHA, mohclass::name, NULL, and var.
Referenced by load_moh_classes(), and local_ast_moh_start().
|
static |
Definition at line 243 of file res_musiconhold.c.
References ao2_cleanup, ast_assert, ast_channel_blob_create_from_cache(), ast_channel_moh_start_type(), ast_channel_name(), ast_channel_topic(), ast_channel_uniqueid(), ast_json_pack(), ast_json_unref(), ast_verb, NULL, stasis_message_data(), and stasis_publish().
Referenced by moh_alloc(), and moh_files_alloc().
|
static |
Definition at line 268 of file res_musiconhold.c.
References ao2_cleanup, ast_assert, ast_channel_blob_create_from_cache(), ast_channel_moh_stop_type(), ast_channel_name(), ast_channel_topic(), ast_channel_uniqueid(), ast_verb, NULL, stasis_message_data(), and stasis_publish().
Referenced by moh_files_release(), and moh_release().
|
static |
Definition at line 1000 of file res_musiconhold.c.
References ao2_cleanup, ao2_lock, ao2_unlock, ast_channel_music_state(), ast_channel_name(), ast_format_get_name(), ast_free, AST_LIST_REMOVE, ast_log, ast_set_write_format(), LOG_WARNING, mohclass::members, moh_post_stop(), mohclass_unref, mohdata::origwfmt, mohdata::parent, mohdata::pipe, and state.
Referenced by moh_alloc().
|
static |
Definition at line 1363 of file res_musiconhold.c.
References ao2_iterator_destroy(), ao2_iterator_init(), ao2_iterator_next, ao2_ref, c, moh_scan_files(), and mohclasses.
Referenced by load_moh_classes().
|
static |
Definition at line 1306 of file res_musiconhold.c.
References ao2_lock, ao2_ref, ao2_unlock, ast_config_AST_DATA_DIR, ast_copy_string(), ast_debug, ast_file_read_dir, ast_test_flag, AST_VECTOR_COMPACT, AST_VECTOR_SIZE, AST_VECTOR_SORT, moh_file_vector_alloc(), moh_filename_strcasecmp(), MOH_SORTALPHA, on_moh_file(), and PATH_MAX.
Referenced by init_files_class(), local_ast_moh_start(), and moh_rescan_files().
Definition at line 974 of file res_musiconhold.c.
References ao2_lock, ao2_unlock, ast_calloc, AST_FRAME_VOICE, ast_free, AST_FRIENDLY_OFFSET, AST_LIST_INSERT_HEAD, ast_log, ast_pipe_nonblock, errno, mohdata::f, ast_frame_subclass::format, mohclass::format, ast_frame::frametype, mohdata::list, LOG_WARNING, mohclass::members, mohclass_ref, NULL, ast_frame::offset, mohdata::parent, mohdata::pipe, and ast_frame::subclass.
Referenced by moh_alloc().
|
static |
Definition at line 789 of file res_musiconhold.c.
References ao2_lock, ao2_unlock, ast_debug, ast_format_determine_length(), ast_format_get_sample_rate(), AST_LIST_EMPTY, AST_LIST_TRAVERSE, ast_log, ast_poll, ast_samp2tv(), ast_timer_ack(), ast_timer_fd(), ast_tvadd(), ast_tvdiff_ms(), ast_tvnow(), ast_tvzero(), errno, killpid(), len(), LOG_ERROR, LOG_NOTICE, LOG_WARNING, MOH_MS_INTERVAL, NULL, mohdata::pipe, and spawn_mp3().
Referenced by init_app_class(), and local_ast_moh_start().
|
static |
Definition at line 1244 of file res_musiconhold.c.
References ast_asprintf, ast_debug, ast_free, AST_VECTOR_APPEND, and AST_VECTOR_GET_CMP.
Referenced by moh_scan_files().
|
static |
Definition at line 887 of file res_musiconhold.c.
References args, AST_APP_ARG, ast_channel_name(), AST_DECLARE_APP_ARGS, ast_log, ast_moh_start(), ast_moh_stop(), ast_safe_sleep(), AST_STANDARD_APP_ARGS, ast_strdupa, ast_strlen_zero(), LOG_WARNING, NULL, and S_OR.
Referenced by load_module().
|
static |
Definition at line 2278 of file res_musiconhold.c.
References ast_install_music_functions(), AST_MODULE_LOAD_SUCCESS, load_moh_classes(), local_ast_moh_cleanup(), local_ast_moh_start(), and local_ast_moh_stop().
Referenced by load_moh_classes().
|
static |
Definition at line 603 of file res_musiconhold.c.
References ast_close_fds_above_n(), ast_copy_string(), ast_log, ast_opt_high_priority, ast_safe_fork(), ast_set_priority(), ast_strlen_zero(), ast_test_flag, errno, LOCAL_MPG_123, LOG_WARNING, MAX_MP3S, MOH_CUSTOM, MOH_QUIET, MOH_SINGLE, MPG_123, NULL, respawn_time, and strsep().
Referenced by monmp3thread().
|
static |
Definition at line 927 of file res_musiconhold.c.
References args, AST_APP_ARG, ast_channel_name(), AST_DECLARE_APP_ARGS, ast_log, ast_moh_start(), AST_STANDARD_APP_ARGS, ast_strdupa, LOG_WARNING, NULL, and S_OR.
Referenced by load_module().
|
static |
Definition at line 946 of file res_musiconhold.c.
References ast_moh_stop().
Referenced by load_module().
|
static |
Definition at line 2295 of file res_musiconhold.c.
References ao2_t_callback, ARRAY_LEN, ast_cli_unregister_multiple(), ast_log, ast_moh_destroy(), ast_uninstall_music_functions(), ast_unregister_application(), ast_unregister_atexit(), cli_moh, LOG_WARNING, moh_class_inuse(), mohclass_unref, mohclasses, NULL, play_moh, start_moh, and stop_moh.
|
static |
Definition at line 2330 of file res_musiconhold.c.
|
static |
Definition at line 2330 of file res_musiconhold.c.
|
static |
Definition at line 2216 of file res_musiconhold.c.
Referenced by load_module(), and unload_module().
|
static |
global MOH_ flags
Definition at line 162 of file res_musiconhold.c.
Referenced by load_moh_classes(), and local_ast_moh_start().
|
static |
Definition at line 595 of file res_musiconhold.c.
Referenced by local_ast_moh_start().
|
static |
Definition at line 210 of file res_musiconhold.c.
Referenced by _get_mohbyname(), _moh_register(), _moh_unregister(), ast_moh_destroy(), complete_mohclass_realtime(), get_mohbydigit(), handle_cli_moh_show_classes(), handle_cli_moh_show_files(), handle_cli_moh_unregister_class(), load_module(), load_moh_classes(), moh_rescan_files(), and unload_module().
|
static |
Definition at line 1104 of file res_musiconhold.c.
Referenced by local_ast_moh_start().
|
static |
Definition at line 123 of file res_musiconhold.c.
Referenced by load_module(), and unload_module().
|
static |
Definition at line 127 of file res_musiconhold.c.
Referenced by _moh_register(), local_ast_moh_start(), and spawn_mp3().
|
static |
Definition at line 124 of file res_musiconhold.c.
Referenced by load_module(), and unload_module().
|
static |
Definition at line 125 of file res_musiconhold.c.
Referenced by load_module(), and unload_module().