mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-29 18:19:30 +00:00
Add channel events for res_stasis apps
This change adds a framework in res_stasis for handling events from channel topics. JSON event generation and validation code is created from event documentation in rest-api/api-docs/events.json to assist in JSON event generation, ensure consistency, and ensure that accurate documentation is available for ALL events that are received by res_stasis applications. The userevent application has been refactored along with the code that handles userevent channel blob events to pass the headers as key/value pairs in the JSON blob. As a side-effect, app_userevent now handles duplicate keys by overwriting the previous value. Review: https://reviewboard.asterisk.org/r/2428/ (closes issue ASTERISK-21180) Patch-By: Kinsey Moore <kmoore@digium.com> git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@388275 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -448,6 +448,37 @@ struct ast_json *ast_channel_snapshot_to_json(const struct ast_channel_snapshot
|
||||
return ast_json_ref(json_chan);
|
||||
}
|
||||
|
||||
int ast_channel_snapshot_cep_equal(
|
||||
const struct ast_channel_snapshot *old_snapshot,
|
||||
const struct ast_channel_snapshot *new_snapshot)
|
||||
{
|
||||
ast_assert(old_snapshot != NULL);
|
||||
ast_assert(new_snapshot != NULL);
|
||||
|
||||
/* We actually get some snapshots with CEP set, but before the
|
||||
* application is set. Since empty application is invalid, we treat
|
||||
* setting the application from nothing as a CEP change.
|
||||
*/
|
||||
if (ast_strlen_zero(old_snapshot->appl) &&
|
||||
!ast_strlen_zero(new_snapshot->appl)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return old_snapshot->priority == new_snapshot->priority &&
|
||||
strcmp(old_snapshot->context, new_snapshot->context) == 0 &&
|
||||
strcmp(old_snapshot->exten, new_snapshot->exten) == 0;
|
||||
}
|
||||
|
||||
int ast_channel_snapshot_caller_id_equal(
|
||||
const struct ast_channel_snapshot *old_snapshot,
|
||||
const struct ast_channel_snapshot *new_snapshot)
|
||||
{
|
||||
ast_assert(old_snapshot != NULL);
|
||||
ast_assert(new_snapshot != NULL);
|
||||
return strcmp(old_snapshot->caller_number, new_snapshot->caller_number) == 0 &&
|
||||
strcmp(old_snapshot->caller_name, new_snapshot->caller_name) == 0;
|
||||
}
|
||||
|
||||
void ast_stasis_channels_shutdown(void)
|
||||
{
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_snapshot_type);
|
||||
|
Reference in New Issue
Block a user