Asterisk - The Open Source Telephony Project GIT-master-f36a736
|
"smart" channels More...
#include "asterisk.h"
#include "asterisk/autochan.h"
#include "asterisk/utils.h"
#include "asterisk/linkedlists.h"
#include "asterisk/options.h"
#include "asterisk/channel.h"
Go to the source code of this file.
Functions | |
void | ast_autochan_destroy (struct ast_autochan *autochan) |
destroy an ast_autochan structure More... | |
void | ast_autochan_new_channel (struct ast_channel *old_chan, struct ast_channel *new_chan) |
Switch what channel autochans point to. More... | |
struct ast_autochan * | ast_autochan_setup (struct ast_channel *chan) |
set up a new ast_autochan structure More... | |
"smart" channels
Definition in file autochan.c.
void ast_autochan_destroy | ( | struct ast_autochan * | autochan | ) |
destroy an ast_autochan structure
Removes the passed-in autochan from the list of autochans and unrefs the channel that is pointed to. Also frees the autochan struct itself. This function will unref the channel reference which was made in ast_autochan_setup
autochan | The autochan that you wish to destroy |
Definition at line 64 of file autochan.c.
References ast_autochan_channel_lock, ast_autochan_channel_unlock, ast_channel_autochans(), ast_channel_unref, ast_debug, ast_free, AST_LIST_REMOVE_CURRENT, AST_LIST_TRAVERSE_SAFE_BEGIN, AST_LIST_TRAVERSE_SAFE_END, ast_mutex_destroy, ast_autochan::chan, ast_autochan::list, and ast_autochan::lock.
Referenced by channel_spy(), common_exec(), launch_monitor_thread(), mixmonitor_thread(), and multi_autochan_free().
void ast_autochan_new_channel | ( | struct ast_channel * | old_chan, |
struct ast_channel * | new_chan | ||
) |
Switch what channel autochans point to.
Traverses the list of autochans. All autochans which point to old_chan will be updated to point to new_chan instead. Currently this is only called during an ast_channel_move() operation in channel.c.
old_chan | The channel that autochans may currently point to |
new_chan | The channel that we want to point those autochans to now |
Definition at line 86 of file autochan.c.
References ast_channel_autochans(), ast_channel_name(), ast_channel_ref, ast_channel_unref, ast_debug, AST_LIST_APPEND_LIST, AST_LIST_TRAVERSE, ast_mutex_lock, ast_mutex_unlock, ast_autochan::chan, ast_autochan::list, and ast_autochan::lock.
Referenced by channel_do_masquerade().
struct ast_autochan * ast_autochan_setup | ( | struct ast_channel * | chan | ) |
set up a new ast_autochan structure
Allocates and initializes an ast_autochan, sets the autochan's chan pointer to point to the chan parameter, and adds the autochan to the global list of autochans. The newly- created autochan is returned to the caller. This function will cause the refcount of chan to increase by 1.
chan | The channel our new autochan will point to |
NULL | Failure |
non-NULL | success |
Definition at line 38 of file autochan.c.
References ast_calloc, ast_channel_autochans(), ast_channel_lock, ast_channel_name(), ast_channel_ref, ast_channel_unlock, ast_debug, AST_LIST_INSERT_TAIL, ast_mutex_init, ast_autochan::chan, ast_autochan::list, ast_autochan::lock, and NULL.
Referenced by attach_barge(), common_exec(), do_broadcast(), launch_monitor_thread(), and next_channel().