Pull CEL linkedid manipulation into cel.c

This finishes moving all CEL linkedid tracking entirely within cel.c
since that is now possible with channel snapshots.

This also removes another CEL linkedid manipulation function from cel.h
that has already been internalized and is neither called nor available
to link against.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@392241 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kinsey Moore 2013-06-19 12:55:34 +00:00
parent 68103abba3
commit 954166ed24
2 changed files with 8 additions and 28 deletions

View File

@ -148,31 +148,6 @@ const char *ast_cel_get_type_name(enum ast_cel_event_type type);
*/
enum ast_cel_event_type ast_cel_str_to_event_type(const char *name);
/*!
* \brief Check and potentially retire a Linked ID
*
* \param chan channel that is being destroyed or its linkedid is changing
*
* \since 1.8
*
* If at least one CEL backend is looking for CEL_LINKEDID_END
* events, this function will check if the given channel is the last
* active channel with that linkedid, and if it is, emit a
* CEL_LINKEDID_END event.
*
* \return nothing
*/
void ast_cel_check_retire_linkedid(struct ast_channel *chan);
/*!
* \brief Inform CEL that a new linkedid is being used
* \since 11
*
* \retval -1 error
* \retval 0 success
*/
int ast_cel_linkedid_ref(const char *linkedid);
/*!
* \brief Create a fake channel from data in a CEL event
*

View File

@ -634,6 +634,7 @@ static int cel_track_app(const char *const_app)
return 1;
}
static int cel_linkedid_ref(const char *linkedid);
static int report_event_snapshot(struct ast_channel_snapshot *snapshot,
enum ast_cel_event_type event_type, const char *userdefevname,
const char *extra, const char *peer2_name)
@ -663,7 +664,7 @@ static int report_event_snapshot(struct ast_channel_snapshot *snapshot,
/* Record the linkedid of new channels if we are tracking LINKEDID_END even if we aren't
* reporting on CHANNEL_START so we can track when to send LINKEDID_END */
if (ast_cel_track_event(AST_CEL_LINKEDID_END) && event_type == AST_CEL_CHANNEL_START && linkedid) {
if (ast_cel_linkedid_ref(linkedid)) {
if (cel_linkedid_ref(linkedid)) {
return -1;
}
}
@ -868,7 +869,7 @@ struct ast_channel *ast_cel_fabricate_channel_from_event(const struct ast_event
return tchan;
}
int ast_cel_linkedid_ref(const char *linkedid)
static int cel_linkedid_ref(const char *linkedid)
{
char *lid;
@ -909,7 +910,7 @@ int ast_cel_report_event(struct ast_channel *chan, enum ast_cel_event_type event
/* Record the linkedid of new channels if we are tracking LINKEDID_END even if we aren't
* reporting on CHANNEL_START so we can track when to send LINKEDID_END */
if (ast_cel_track_event(AST_CEL_LINKEDID_END) && event_type == AST_CEL_CHANNEL_START && linkedid) {
if (ast_cel_linkedid_ref(linkedid)) {
if (cel_linkedid_ref(linkedid)) {
return -1;
}
}
@ -1114,7 +1115,11 @@ static void cel_channel_linkedid_change(
return;
}
ast_assert(!ast_strlen_zero(new_snapshot->linkedid));
ast_assert(!ast_strlen_zero(old_snapshot->linkedid));
if (strcmp(old_snapshot->linkedid, new_snapshot->linkedid)) {
cel_linkedid_ref(new_snapshot->linkedid);
check_retire_linkedid(old_snapshot);
}
}