Summary:ASTERISK-21563: API Enhancements - CEL refactoring - channel state
Reporter:Matt Jordan (mjordan)Labels:Asterisk12
Date Opened:2013-04-17 22:10:59Date Closed:2013-06-13 08:21:03
Status:Closed/CompleteComponents:CEL/General Core/Stasis
Versions:Frequency of
Description:Yay, CEL!

With Stasis-Core, we no longer need a bunch of CEL events all over the code, as the state of channels and bridges is conveyed across the Stasis-Core message bus. The first step is to refactor the following:

* Subscribe to the all channel caching topic in cel.c. Set up a message router to handle channel updates.
** When a channel is created, create an AST_CEL_CHANNEL_START event
** When a channel is hungup, create an AST_CEL_HANGUP event
** When a channel is removed from the cache, create an AST_CEL_CHANNEL_END event
** When a channel is answered, create an AST_CEL_ANSWER event
** If the application changes on a snapshot, create an AST_CEL_APP_START from the new snapshot
** If the application changes on a snapshot, create an AST_CEL_APP_END from the old snapshot
* Remove all events referenced above
* Refactor {{ast_cel_check_retire_linkedid}} to occur when an AST_CEL_CHANNEL_END would be raised, that is, when a channel is destroyed. Remove references to it from channel.c; make it a private function.
** If a linkedid changes on a channel, call the private version of {{ast_cel_check_retire_linkedid}}