Refactor extraneous channel events

This change removes JitterBufStats, ChannelReload, and ChannelUpdate
and refactors the following events to travel over Stasis-Core:
* LocalBridge
* DAHDIChannel
* AlarmClear
* SpanAlarmClear
* Alarm
* SpanAlarm
* DNDState
* MCID
* SIPQualifyPeerDone
* SessionTimeout

Review: https://reviewboard.asterisk.org/r/2627/
(closes issue ASTERISK-21476)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@393284 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kinsey Moore
2013-07-01 13:16:09 +00:00
parent 68b3bce8b8
commit 909ee4bfb9
16 changed files with 888 additions and 405 deletions

View File

@@ -2622,6 +2622,19 @@ int analog_ss_thread_start(struct analog_pvt *p, struct ast_channel *chan)
return ast_pthread_create_detached(&threadid, NULL, __analog_ss_thread, p);
}
static void analog_publish_channel_alarm_clear(int channel)
{
RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
ast_log(LOG_NOTICE, "Alarm cleared on channel %d\n", channel);
body = ast_json_pack("{s: i}", "Channel", channel);
if (!body) {
return;
}
ast_manager_publish_event("AlarmClear", EVENT_FLAG_SYSTEM, body);
}
static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_channel *ast)
{
int res, x;
@@ -3086,14 +3099,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
break;
case ANALOG_EVENT_NOALARM:
analog_set_alarm(p, 0);
ast_log(LOG_NOTICE, "Alarm cleared on channel %d\n", p->channel);
/*** DOCUMENTATION
<managerEventInstance>
<synopsis>Raised when an Alarm is cleared on an Analog channel.</synopsis>
</managerEventInstance>
***/
manager_event(EVENT_FLAG_SYSTEM, "AlarmClear",
"Channel: %d\r\n", p->channel);
analog_publish_channel_alarm_clear(p->channel);
break;
case ANALOG_EVENT_WINKFLASH:
if (p->inalarm) {
@@ -3735,9 +3741,7 @@ void *analog_handle_init_event(struct analog_pvt *i, int event)
break;
case ANALOG_EVENT_NOALARM:
analog_set_alarm(i, 0);
ast_log(LOG_NOTICE, "Alarm cleared on channel %d\n", i->channel);
manager_event(EVENT_FLAG_SYSTEM, "AlarmClear",
"Channel: %d\r\n", i->channel);
analog_publish_channel_alarm_clear(i->channel);
break;
case ANALOG_EVENT_ALARM:
analog_set_alarm(i, 1);
@@ -3940,6 +3944,26 @@ int analog_fixup(struct ast_channel *oldchan, struct ast_channel *newchan, void
return 0;
}
static void analog_publish_dnd_state(int channel, const char *status)
{
RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
RAII_VAR(struct ast_str *, dahdichan, ast_str_create(32), ast_free);
if (!dahdichan) {
return;
}
ast_str_set(&dahdichan, 0, "DAHDI/%d", channel);
body = ast_json_pack("{s: s, s: s}",
"Channel", ast_str_buffer(dahdichan),
"Status", status);
if (!body) {
return;
}
ast_manager_publish_event("DNDState", EVENT_FLAG_SYSTEM, body);
}
int analog_dnd(struct analog_pvt *p, int flag)
{
if (flag == -1) {
@@ -3951,23 +3975,7 @@ int analog_dnd(struct analog_pvt *p, int flag)
ast_verb(3, "%s DND on channel %d\n",
flag ? "Enabled" : "Disabled",
p->channel);
/*** DOCUMENTATION
<managerEventInstance>
<synopsis>Raised when the Do Not Disturb state is changed on an Analog channel.</synopsis>
<syntax>
<parameter name="Status">
<enumlist>
<enum name="enabled"/>
<enum name="disabled"/>
</enumlist>
</parameter>
</syntax>
</managerEventInstance>
***/
manager_event(EVENT_FLAG_SYSTEM, "DNDState",
"Channel: DAHDI/%d\r\n"
"Status: %s\r\n", p->channel,
flag ? "enabled" : "disabled");
analog_publish_dnd_state(p->channel, flag ? "enabled" : "disabled");
return 0;
}