Asterisk - The Open Source Telephony Project GIT-master-ff80666
|
Websocket Media Channel. More...
#include "asterisk.h"
#include "asterisk/app.h"
#include "asterisk/causes.h"
#include "asterisk/channel.h"
#include "asterisk/codec.h"
#include "asterisk/http_websocket.h"
#include "asterisk/format_cache.h"
#include "asterisk/frame.h"
#include "asterisk/lock.h"
#include "asterisk/mod_format.h"
#include "asterisk/module.h"
#include "asterisk/pbx.h"
#include "asterisk/uuid.h"
#include "asterisk/timing.h"
#include "asterisk/translate.h"
#include "asterisk/websocket_client.h"
Go to the source code of this file.
Data Structures | |
struct | instance_proxy |
struct | websocket_pvt |
Macros | |
#define | ANSWER_CHANNEL "ANSWER" |
#define | CONTINUE_MEDIA "CONTINUE_MEDIA" |
#define | DRIVER_STATUS "STATUS" |
#define | DTMF_END "DTMF_END" |
#define | FLUSH_MEDIA "FLUSH_MEDIA" |
#define | GET_DRIVER_STATUS "GET_STATUS" |
#define | HANGUP_CHANNEL "HANGUP" |
#define | INCOMING_CONNECTION_ID "INCOMING" |
#define | MAX_TEXT_MESSAGE_LEN MIN(128, (AST_WEBSOCKET_MAX_RX_PAYLOAD_SIZE - 1)) |
#define | MEDIA_BUFFERING_COMPLETED "MEDIA_BUFFERING_COMPLETED" |
#define | MEDIA_START "MEDIA_START" |
#define | MEDIA_WEBSOCKET_CONNECTION_ID "MEDIA_WEBSOCKET_CONNECTION_ID" |
#define | MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE "MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE" |
#define | MEDIA_XOFF "MEDIA_XOFF" |
#define | MEDIA_XON "MEDIA_XON" |
#define | PAUSE_MEDIA "PAUSE_MEDIA" |
#define | QUEUE_DRAINED "QUEUE_DRAINED" |
#define | QUEUE_LENGTH_MAX 1000 |
#define | QUEUE_LENGTH_XOFF_LEVEL 900 |
#define | QUEUE_LENGTH_XON_LEVEL 800 |
#define | REPORT_QUEUE_DRAINED "REPORT_QUEUE_DRAINED" |
#define | START_MEDIA_BUFFERING "START_MEDIA_BUFFERING" |
#define | STOP_MEDIA_BUFFERING "STOP_MEDIA_BUFFERING" |
Enumerations | |
enum | { OPT_WS_CODEC = (1 << 0) , OPT_WS_NO_AUTO_ANSWER = (1 << 1) , OPT_WS_URI_PARAM = (1 << 2) , OPT_WS_PASSTHROUGH = (1 << 3) } |
enum | { OPT_ARG_WS_CODEC , OPT_ARG_WS_NO_AUTO_ANSWER , OPT_ARG_WS_URI_PARAM , OPT_ARG_WS_PASSTHROUGH , OPT_ARG_ARRAY_SIZE } |
Functions | |
static void | __reg_module (void) |
static void | __unreg_module (void) |
struct ast_module * | AST_MODULE_SELF_SYM (void) |
static struct ast_frame * | dequeue_frame (struct websocket_pvt *instance) |
static void | incoming_ws_established_cb (struct ast_websocket *ast_ws_session, struct ast_variable *get_params, struct ast_variable *upgrade_headers) |
static int | incoming_ws_http_callback (struct ast_tcptls_session_instance *ser, const struct ast_http_uri *urih, const char *uri, enum ast_http_method method, struct ast_variable *get_params, struct ast_variable *headers) |
static void | instance_proxy_cb (void *weakproxy, void *data) |
static int | load_module (void) |
Function called when our module is loaded. More... | |
static int | process_binary_message (struct websocket_pvt *instance, char *payload, uint64_t payload_len) |
static int | process_text_message (struct websocket_pvt *instance, char *payload, uint64_t payload_len) |
static int | queue_frame_from_buffer (struct websocket_pvt *instance, char *buffer, size_t len) |
static int | queue_option_frame (struct websocket_pvt *instance, char *buffer) |
static int | read_from_ws_and_queue (struct websocket_pvt *instance) |
static void * | read_thread_handler (void *obj) |
static void | set_channel_format (struct websocket_pvt *instance, struct ast_format *fmt) |
static int | set_channel_timer (struct websocket_pvt *instance) |
static int | set_channel_variables (struct websocket_pvt *instance) |
static int | set_instance_silence_frame (struct websocket_pvt *instance) |
static int | set_instance_translator (struct websocket_pvt *instance) |
static int | unload_module (void) |
Function called when our module is unloaded. More... | |
static int | validate_uri_parameters (const char *uri_params) |
static int | webchan_call (struct ast_channel *ast, const char *dest, int timeout) |
static int | webchan_hangup (struct ast_channel *ast) |
static struct ast_frame * | webchan_read (struct ast_channel *ast) |
static struct ast_channel * | webchan_request (const char *type, struct ast_format_cap *cap, const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, const char *data, int *cause) |
static int | webchan_send_dtmf_text (struct ast_channel *ast, char digit, unsigned int duration) |
static int | webchan_write (struct ast_channel *ast, struct ast_frame *f) |
Function called when we should write a frame to the channel. More... | |
static void | websocket_destructor (void *data) |
static struct websocket_pvt * | websocket_new (const char *chan_name, const char *connection_id, struct ast_format *fmt) |
Variables | |
static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Websocket Media Channel" , .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, .load_pri = AST_MODPRI_CHANNEL_DRIVER, .requires = "res_http_websocket,res_websocket_client", } |
static const struct ast_module_info * | ast_module_info = &__mod_info |
static struct ast_websocket_server * | ast_ws_server |
static struct ast_http_uri | http_uri |
static struct ao2_container * | instances = NULL |
static const struct ast_app_option | websocket_options [128] = { [ 'c' ] = { .flag = OPT_WS_CODEC , .arg_index = OPT_ARG_WS_CODEC + 1 }, [ 'n' ] = { .flag = OPT_WS_NO_AUTO_ANSWER }, [ 'v' ] = { .flag = OPT_WS_URI_PARAM , .arg_index = OPT_ARG_WS_URI_PARAM + 1 }, [ 'p' ] = { .flag = OPT_WS_PASSTHROUGH }, } |
static struct ast_channel_tech | websocket_tech |
Websocket Media Channel.
Definition in file chan_websocket.c.
#define ANSWER_CHANNEL "ANSWER" |
Definition at line 159 of file chan_websocket.c.
#define CONTINUE_MEDIA "CONTINUE_MEDIA" |
Definition at line 167 of file chan_websocket.c.
#define DRIVER_STATUS "STATUS" |
Definition at line 173 of file chan_websocket.c.
#define DTMF_END "DTMF_END" |
Definition at line 175 of file chan_websocket.c.
#define FLUSH_MEDIA "FLUSH_MEDIA" |
Definition at line 163 of file chan_websocket.c.
#define GET_DRIVER_STATUS "GET_STATUS" |
Definition at line 164 of file chan_websocket.c.
#define HANGUP_CHANNEL "HANGUP" |
Definition at line 160 of file chan_websocket.c.
#define INCOMING_CONNECTION_ID "INCOMING" |
Definition at line 157 of file chan_websocket.c.
#define MAX_TEXT_MESSAGE_LEN MIN(128, (AST_WEBSOCKET_MAX_RX_PAYLOAD_SIZE - 1)) |
Definition at line 180 of file chan_websocket.c.
#define MEDIA_BUFFERING_COMPLETED "MEDIA_BUFFERING_COMPLETED" |
Definition at line 174 of file chan_websocket.c.
#define MEDIA_START "MEDIA_START" |
Definition at line 169 of file chan_websocket.c.
#define MEDIA_WEBSOCKET_CONNECTION_ID "MEDIA_WEBSOCKET_CONNECTION_ID" |
Definition at line 156 of file chan_websocket.c.
#define MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE "MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE" |
Definition at line 155 of file chan_websocket.c.
#define MEDIA_XOFF "MEDIA_XOFF" |
Definition at line 171 of file chan_websocket.c.
#define MEDIA_XON "MEDIA_XON" |
Definition at line 170 of file chan_websocket.c.
#define PAUSE_MEDIA "PAUSE_MEDIA" |
Definition at line 166 of file chan_websocket.c.
#define QUEUE_DRAINED "QUEUE_DRAINED" |
Definition at line 172 of file chan_websocket.c.
#define QUEUE_LENGTH_MAX 1000 |
Definition at line 177 of file chan_websocket.c.
#define QUEUE_LENGTH_XOFF_LEVEL 900 |
Definition at line 178 of file chan_websocket.c.
#define QUEUE_LENGTH_XON_LEVEL 800 |
Definition at line 179 of file chan_websocket.c.
#define REPORT_QUEUE_DRAINED "REPORT_QUEUE_DRAINED" |
Definition at line 165 of file chan_websocket.c.
#define START_MEDIA_BUFFERING "START_MEDIA_BUFFERING" |
Definition at line 161 of file chan_websocket.c.
#define STOP_MEDIA_BUFFERING "STOP_MEDIA_BUFFERING" |
Definition at line 162 of file chan_websocket.c.
anonymous enum |
Enumerator | |
---|---|
OPT_WS_CODEC | |
OPT_WS_NO_AUTO_ANSWER | |
OPT_WS_URI_PARAM | |
OPT_WS_PASSTHROUGH |
Definition at line 1273 of file chan_websocket.c.
anonymous enum |
Enumerator | |
---|---|
OPT_ARG_WS_CODEC | |
OPT_ARG_WS_NO_AUTO_ANSWER | |
OPT_ARG_WS_URI_PARAM | |
OPT_ARG_WS_PASSTHROUGH | |
OPT_ARG_ARRAY_SIZE |
Definition at line 1280 of file chan_websocket.c.
|
static |
Definition at line 1761 of file chan_websocket.c.
|
static |
Definition at line 1761 of file chan_websocket.c.
struct ast_module * AST_MODULE_SELF_SYM | ( | void | ) |
Definition at line 1761 of file chan_websocket.c.
|
static |
Definition at line 218 of file chan_websocket.c.
References ast_channel_name(), AST_CONTROL_OPTION, ast_debug, AST_FRAME_CONTROL, ast_frame_free(), AST_LIST_LOCK, AST_LIST_REMOVE_HEAD, AST_LIST_UNLOCK, ast_websocket_write_string(), websocket_pvt::channel, ast_frame::data, websocket_pvt::frame_queue, websocket_pvt::frame_queue_length, ast_frame::frametype, ast_frame_subclass::integer, MEDIA_XON, NULL, ast_frame::ptr, QUEUE_DRAINED, websocket_pvt::queue_full, QUEUE_LENGTH_XON_LEVEL, websocket_pvt::queue_paused, websocket_pvt::report_queue_drained, SCOPED_LOCK, ast_frame::subclass, and websocket_pvt::websocket.
Referenced by webchan_read().
|
static |
Definition at line 1536 of file chan_websocket.c.
References ao2_bump, ao2_cleanup, ao2_weakproxy_find, AST_CONTROL_HANGUP, ast_debug, ast_log, ast_queue_control(), ast_variable_find_in_list(), ast_websocket_close(), ast_websocket_fd(), ast_websocket_unref(), websocket_pvt::channel, websocket_pvt::connection_id, errno, instances, LOG_WARNING, ast_variable::name, ast_variable::next, NULL, OBJ_NOLOCK, OBJ_SEARCH_KEY, RAII_VAR, read_thread_handler(), ast_variable::value, and websocket_pvt::websocket.
Referenced by load_module().
|
static |
Definition at line 1604 of file chan_websocket.c.
References ao2_cleanup, ao2_weakproxy_find, ast_channel_name(), ast_debug, ast_http_error(), ast_log, ast_variable_list_append, ast_variable_new, ast_variables_destroy(), ast_websocket_uri_cb(), ast_ws_server, ast_http_uri::data, instances, LOG_WARNING, method, ast_variable::name, ast_variable::next, NULL, OBJ_NOLOCK, OBJ_SEARCH_KEY, RAII_VAR, and ast_variable::value.
|
static |
Definition at line 1043 of file chan_websocket.c.
References ao2_unlink, ast_debug, instance_proxy::connection_id, and instances.
Referenced by websocket_new().
|
static |
Function called when our module is loaded.
Definition at line 1710 of file chan_websocket.c.
References AO2_ALLOC_OPT_LOCK_RWLOCK, ao2_container_alloc_hash, AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE, ast_channel_register(), ast_format_cap_alloc, ast_format_cap_append_by_type(), AST_FORMAT_CAP_FLAG_DEFAULT, ast_http_uri_link(), ast_log, AST_MEDIA_TYPE_UNKNOWN, AST_MODULE_LOAD_DECLINE, AST_MODULE_LOAD_SUCCESS, ast_websocket_server_add_protocol2(), ast_websocket_server_create(), ast_websocket_sub_protocol_alloc(), ast_ws_server, ast_channel_tech::capabilities, http_uri, incoming_ws_established_cb(), instances, LOG_ERROR, LOG_WARNING, ast_websocket_protocol::session_established, unload_module(), and websocket_tech.
|
static |
Definition at line 640 of file chan_websocket.c.
References ast_channel_name(), ast_debug, AST_LIST_LOCK, AST_LIST_UNLOCK, websocket_pvt::bulk_media_in_progress, websocket_pvt::bytes_read, websocket_pvt::channel, websocket_pvt::frame_queue, websocket_pvt::frame_queue_length, websocket_pvt::leftover_data, websocket_pvt::leftover_len, MIN, NULL, websocket_pvt::optimal_frame_size, websocket_pvt::passthrough, queue_frame_from_buffer(), QUEUE_LENGTH_MAX, and SCOPED_LOCK.
Referenced by read_from_ws_and_queue().
|
static |
Definition at line 487 of file chan_websocket.c.
References ANSWER_CHANNEL, ast_alloca, ast_asprintf, ast_begins_with(), ast_channel_name(), AST_CONTROL_ANSWER, AST_CONTROL_HANGUP, ast_debug, ast_free, ast_frfree, AST_LIST_LOCK, AST_LIST_REMOVE_HEAD, AST_LIST_UNLOCK, ast_log, ast_queue_control(), ast_strings_equal(), ast_strip(), ast_strlen_zero(), ast_websocket_write_string(), websocket_pvt::bulk_media_in_progress, websocket_pvt::channel, CONTINUE_MEDIA, DRIVER_STATUS, FLUSH_MEDIA, websocket_pvt::frame_queue, websocket_pvt::frame_queue_length, GET_DRIVER_STATUS, HANGUP_CHANNEL, id, websocket_pvt::leftover_data, websocket_pvt::leftover_len, LOG_WARNING, MAX_TEXT_MESSAGE_LEN, MEDIA_BUFFERING_COMPLETED, NULL, websocket_pvt::passthrough, PAUSE_MEDIA, queue_frame_from_buffer(), websocket_pvt::queue_full, QUEUE_LENGTH_XOFF_LEVEL, QUEUE_LENGTH_XON_LEVEL, queue_option_frame(), websocket_pvt::queue_paused, websocket_pvt::report_queue_drained, REPORT_QUEUE_DRAINED, S_COR, S_OR, SCOPED_LOCK, START_MEDIA_BUFFERING, status, STOP_MEDIA_BUFFERING, and websocket_pvt::websocket.
Referenced by read_from_ws_and_queue().
|
static |
Definition at line 423 of file chan_websocket.c.
References ast_channel_name(), ast_debug, AST_FRAME_SET_BUFFER, AST_FRAME_VOICE, ast_frisolate, AST_LIST_INSERT_TAIL, AST_LIST_LOCK, AST_LIST_UNLOCK, ast_log, ast_websocket_write_string(), websocket_pvt::channel, ast_frame::datalen, ast_frame_subclass::format, websocket_pvt::frame_queue, websocket_pvt::frame_queue_length, ast_frame::frametype, len(), LOG_WARNING, MEDIA_XOFF, websocket_pvt::native_codec, websocket_pvt::native_format, NULL, websocket_pvt::queue_full, QUEUE_LENGTH_XOFF_LEVEL, ast_frame::samples, ast_codec::samples_count, SCOPED_LOCK, ast_frame::subclass, and websocket_pvt::websocket.
Referenced by process_binary_message(), and process_text_message().
|
static |
Definition at line 460 of file chan_websocket.c.
References ast_channel_name(), AST_CONTROL_OPTION, ast_debug, AST_FRAME_CONTROL, AST_FRAME_SET_BUFFER, ast_frisolate, AST_LIST_INSERT_TAIL, AST_LIST_LOCK, AST_LIST_UNLOCK, ast_log, websocket_pvt::channel, websocket_pvt::frame_queue, ast_frame::frametype, ast_frame_subclass::integer, LOG_WARNING, NULL, and ast_frame::subclass.
Referenced by process_text_message().
|
static |
Definition at line 765 of file chan_websocket.c.
References ao2_lock, ao2_unlock, ast_channel_name(), ast_debug, ast_log, ast_wait_for_input(), ast_websocket_fd(), AST_WEBSOCKET_OPCODE_BINARY, AST_WEBSOCKET_OPCODE_CLOSE, AST_WEBSOCKET_OPCODE_TEXT, ast_websocket_read(), websocket_pvt::channel, errno, LOG_WARNING, NULL, process_binary_message(), process_text_message(), and websocket_pvt::websocket.
Referenced by read_thread_handler().
|
static |
Definition at line 837 of file chan_websocket.c.
References ao2_cleanup, ast_asprintf, ast_channel_name(), AST_CONTROL_ANSWER, AST_CONTROL_HANGUP, ast_debug, ast_format_get_name(), ast_free, ast_log, ast_queue_control(), ast_websocket_write_string(), LOG_ERROR, MEDIA_START, NULL, RAII_VAR, and read_from_ws_and_queue().
Referenced by incoming_ws_established_cb(), and webchan_call().
|
static |
Definition at line 201 of file chan_websocket.c.
References ast_channel_rawreadformat(), ast_channel_readformat(), ast_channel_set_rawreadformat(), ast_debug, ast_format_cmp(), AST_FORMAT_CMP_NOT_EQUAL, ast_format_get_name(), ast_set_read_format(), and websocket_pvt::channel.
Referenced by webchan_read().
|
static |
Definition at line 1208 of file chan_websocket.c.
References ast_channel_name(), ast_channel_set_fd(), ast_debug, ast_format_get_default_ms(), ast_timer_fd(), ast_timer_open(), ast_timer_set_rate(), websocket_pvt::channel, websocket_pvt::native_format, and websocket_pvt::timer.
Referenced by webchan_request().
|
static |
Definition at line 1229 of file chan_websocket.c.
References ast_asprintf, ast_free, websocket_pvt::channel, websocket_pvt::connection_id, MEDIA_WEBSOCKET_CONNECTION_ID, MEDIA_WEBSOCKET_OPTIMAL_FRAME_SIZE, NULL, websocket_pvt::optimal_frame_size, and pbx_builtin_setvar_helper().
Referenced by webchan_request().
|
static |
Definition at line 1185 of file chan_websocket.c.
References ast_calloc, AST_FRAME_VOICE, ast_frame::data, ast_frame::datalen, ast_codec::default_ms, ast_frame_subclass::format, ast_frame::frametype, ast_frame::mallocd, ast_codec::minimum_bytes, ast_codec::minimum_ms, ast_frame::offset, ast_frame::ptr, ast_frame::samples, websocket_pvt::silence, websocket_pvt::slin_codec, websocket_pvt::slin_format, ast_frame::src, and ast_frame::subclass.
Referenced by webchan_request().
|
static |
Definition at line 1154 of file chan_websocket.c.
References ao2_bump, ast_channel_name(), ast_debug, ast_format_cache_get_slin_by_rate(), ast_format_cache_is_slinear(), ast_format_get_codec(), ast_format_get_default_ms(), ast_format_get_name(), ast_format_get_sample_rate(), ast_log, ast_translator_build_path(), websocket_pvt::channel, LOG_ERROR, websocket_pvt::native_codec, websocket_pvt::native_format, ast_codec::sample_rate, websocket_pvt::slin_codec, websocket_pvt::slin_format, and websocket_pvt::translator.
Referenced by webchan_request().
|
static |
Function called when our module is unloaded.
Definition at line 1689 of file chan_websocket.c.
References ao2_cleanup, ast_channel_unregister(), ast_http_uri_unlink(), ast_ws_server, ast_channel_tech::capabilities, http_uri, instances, NULL, and websocket_tech.
Referenced by load_module().
|
static |
Definition at line 1246 of file chan_websocket.c.
References ast_strdupa, ast_strsep(), ast_uri_verify_encoded(), NULL, and websocket_pvt::uri_params.
Referenced by webchan_request().
|
static |
Definition at line 919 of file chan_websocket.c.
References ao2_bump, ao2_cleanup, ast_channel_name(), ast_channel_tech_pvt(), ast_debug, ast_log, ast_pthread_create_detached_background, ast_strlen_zero(), ast_websocket_client_add_uri_params(), ast_websocket_client_connect(), ast_websocket_fd(), ast_websocket_result_to_str(), AST_WS_TYPE_SERVER, websocket_pvt::channel, websocket_pvt::client, websocket_pvt::connection_id, errno, LOG_WARNING, NULL, websocket_pvt::outbound_read_thread, read_thread_handler(), result, websocket_pvt::type, websocket_pvt::uri_params, websocket_pvt::websocket, and WS_OK.
|
static |
Definition at line 1470 of file chan_websocket.c.
References ao2_cleanup, ao2_lock, ao2_unlock, ast_channel_name(), ast_channel_tech_pvt(), ast_channel_tech_pvt_set(), ast_debug, ast_websocket_close(), ast_websocket_unref(), websocket_pvt::connection_id, NULL, and websocket_pvt::websocket.
|
static |
Definition at line 323 of file chan_websocket.c.
References ast_calloc, ast_channel_name(), ast_channel_tech_pvt(), ast_debug, ast_frame_free(), ast_frdup, ast_free, AST_FRIENDLY_OFFSET, ast_log, AST_MALLOCD_DATA, ast_timer_ack(), ast_timer_get_event(), AST_TIMING_EVENT_EXPIRED, ast_translate(), ast_frame::data, ast_frame::datalen, dequeue_frame(), LOG_WARNING, ast_frame::mallocd, websocket_pvt::native_format, NULL, ast_frame::offset, websocket_pvt::optimal_frame_size, websocket_pvt::passthrough, ast_frame::ptr, ast_frame::samples, set_channel_format(), websocket_pvt::silence, websocket_pvt::slin_format, websocket_pvt::timer, and websocket_pvt::translator.
|
static |
Definition at line 1295 of file chan_websocket.c.
References ao2_bump, ao2_cleanup, args, AST_APP_ARG, ast_app_parse_options(), AST_CAUSE_FAILURE, ast_channel_alloc, ast_channel_name(), ast_channel_nativeformats_set(), ast_channel_set_rawreadformat(), ast_channel_set_rawwriteformat(), ast_channel_set_readformat(), ast_channel_set_writeformat(), ast_channel_tech_pvt_set(), ast_channel_tech_set(), ast_channel_unlock, ast_debug, AST_DECLARE_APP_ARGS, ast_format_cache_get, ast_format_cap_alloc, ast_format_cap_append, AST_FORMAT_CAP_FLAG_DEFAULT, ast_format_cap_get_format(), ast_log, AST_NONSTANDARD_APP_ARGS, AST_STATE_DOWN, ast_strdup, ast_strdupa, ast_strings_equal(), ast_strlen_zero(), ast_test_flag, INCOMING_CONNECTION_ID, LOG_ERROR, LOG_WARNING, NULL, OPT_ARG_ARRAY_SIZE, OPT_ARG_WS_CODEC, OPT_ARG_WS_URI_PARAM, OPT_WS_CODEC, OPT_WS_NO_AUTO_ANSWER, OPT_WS_PASSTHROUGH, OPT_WS_URI_PARAM, options, RAII_VAR, set_channel_timer(), set_channel_variables(), set_instance_silence_frame(), set_instance_translator(), validate_uri_parameters(), websocket_new(), websocket_options, and websocket_tech.
|
static |
Definition at line 1501 of file chan_websocket.c.
References ast_asprintf, ast_channel_name(), ast_channel_tech_pvt(), ast_debug, ast_free, ast_log, ast_websocket_write_string(), websocket_pvt::channel, digit, DTMF_END, LOG_ERROR, and websocket_pvt::websocket.
|
static |
Function called when we should write a frame to the channel.
Definition at line 887 of file chan_websocket.c.
References ast_channel_name(), ast_channel_tech_pvt(), ast_format_cmp(), AST_FORMAT_CMP_NOT_EQUAL, ast_format_get_name(), AST_FRAME_VOICE, ast_log, AST_WEBSOCKET_OPCODE_BINARY, ast_websocket_write(), ast_frame::data, ast_frame::datalen, ast_frame_subclass::format, ast_frame::frametype, LOG_WARNING, websocket_pvt::native_format, ast_frame::ptr, ast_frame::subclass, and websocket_pvt::websocket.
|
static |
Definition at line 978 of file chan_websocket.c.
References ao2_cleanup, ast_channel_unref, ast_debug, ast_free, ast_frfree, AST_LIST_LOCK, AST_LIST_REMOVE_HEAD, AST_LIST_UNLOCK, ast_timer_close(), ast_translator_free_path(), ast_websocket_unref(), websocket_pvt::channel, websocket_pvt::client, websocket_pvt::connection_id, ast_frame::data, websocket_pvt::frame_queue, websocket_pvt::leftover_data, websocket_pvt::native_codec, websocket_pvt::native_format, NULL, ast_frame::ptr, websocket_pvt::silence, websocket_pvt::slin_codec, websocket_pvt::slin_format, websocket_pvt::timer, websocket_pvt::translator, websocket_pvt::uri_params, and websocket_pvt::websocket.
Referenced by websocket_new().
|
static |
Definition at line 1050 of file chan_websocket.c.
References ao2_alloc, ao2_bump, ao2_cleanup, ao2_link_flags, ao2_weakproxy_alloc, ao2_weakproxy_set_object, ao2_weakproxy_subscribe(), ast_calloc, ast_debug, ast_format_get_codec(), ast_format_get_default_ms(), ast_format_get_minimum_bytes(), ast_format_get_minimum_ms(), ast_format_get_name(), ast_format_get_sample_rate(), AST_LIST_HEAD_INIT, ast_log, ast_strings_equal(), ast_uuid_generate_str(), AST_UUID_STR_LEN, ast_websocket_client_retrieve_by_id(), AST_WS_TYPE_CLIENT, AST_WS_TYPE_SERVER, websocket_pvt::connection_id, INCOMING_CONNECTION_ID, instance_proxy_cb(), instances, LOG_ERROR, NULL, OBJ_NOLOCK, RAII_VAR, SCOPED_AO2WRLOCK, uuid(), and websocket_destructor().
Referenced by webchan_request().
|
static |
Definition at line 1761 of file chan_websocket.c.
|
static |
Definition at line 1761 of file chan_websocket.c.
|
static |
Definition at line 122 of file chan_websocket.c.
Referenced by incoming_ws_http_callback(), load_module(), and unload_module().
|
static |
Definition at line 1678 of file chan_websocket.c.
Referenced by load_module(), and unload_module().
|
static |
Definition at line 124 of file chan_websocket.c.
Referenced by incoming_ws_established_cb(), incoming_ws_http_callback(), instance_proxy_cb(), load_module(), unload_module(), and websocket_new().
|
static |
Definition at line 1293 of file chan_websocket.c.
Referenced by webchan_request().
|
static |
Definition at line 190 of file chan_websocket.c.
Referenced by load_module(), unload_module(), and webchan_request().