Refactor operations to access the stasis cache instead of objects directly when retrieving information.

(closes issue ASTERISK-21883)

Review: https://reviewboard.asterisk.org/r/2645/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@393831 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Joshua Colp
2013-07-08 19:19:55 +00:00
parent b698d80d4b
commit 7c044acbd9
13 changed files with 488 additions and 534 deletions

View File

@@ -2753,16 +2753,18 @@ static int handle_setcallerid(struct ast_channel *chan, AGI *agi, int argc, cons
static int handle_channelstatus(struct ast_channel *chan, AGI *agi, int argc, const char * const argv[])
{
struct ast_channel *c;
if (argc == 2) {
/* no argument: supply info on the current channel */
ast_agi_send(agi->fd, chan, "200 result=%d\n", ast_channel_state(chan));
return RESULT_SUCCESS;
} else if (argc == 3) {
RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
/* one argument: look for info on the specified channel */
if ((c = ast_channel_get_by_name(argv[2]))) {
ast_agi_send(agi->fd, chan, "200 result=%d\n", ast_channel_state(c));
c = ast_channel_unref(c);
if ((msg = stasis_cache_get(ast_channel_topic_all_cached_by_name(), ast_channel_snapshot_type(), argv[2]))) {
struct ast_channel_snapshot *snapshot = stasis_message_data(msg);
ast_agi_send(agi->fd, chan, "200 result=%d\n", snapshot->state);
return RESULT_SUCCESS;
}
/* if we get this far no channel name matched the argument given */