mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-13 00:04:53 +00:00
Expose channel snapshot manager blob generation
These functions are already used in one branch (jrose's parking branch) and will soon be used in other branches as well. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@385522 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -316,6 +316,37 @@ int astman_datastore_remove(struct mansession *s, struct ast_datastore *datastor
|
|||||||
*/
|
*/
|
||||||
struct ast_datastore *astman_datastore_find(struct mansession *s, const struct ast_datastore_info *info, const char *uid);
|
struct ast_datastore *astman_datastore_find(struct mansession *s, const struct ast_datastore_info *info, const char *uid);
|
||||||
|
|
||||||
|
/*! \brief Struct representing a snapshot of channel state */
|
||||||
|
struct ast_channel_snapshot;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Generate the AMI message body from a channel snapshot
|
||||||
|
* \since 12
|
||||||
|
*
|
||||||
|
* \param snapshot the channel snapshot for which to generate an AMI message
|
||||||
|
* body
|
||||||
|
* \param suffix the suffix to append to the channel fields
|
||||||
|
*
|
||||||
|
* \retval NULL on error
|
||||||
|
* \retval ast_str* on success (must be ast_freed by caller)
|
||||||
|
*/
|
||||||
|
struct ast_str *ast_manager_build_channel_state_string_suffix(
|
||||||
|
const struct ast_channel_snapshot *snapshot,
|
||||||
|
const char *suffix);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Generate the AMI message body from a channel snapshot
|
||||||
|
* \since 12
|
||||||
|
*
|
||||||
|
* \param snapshot the channel snapshot for which to generate an AMI message
|
||||||
|
* body
|
||||||
|
*
|
||||||
|
* \retval NULL on error
|
||||||
|
* \retval ast_str* on success (must be ast_freed by caller)
|
||||||
|
*/
|
||||||
|
struct ast_str *ast_manager_build_channel_state_string(
|
||||||
|
const struct ast_channel_snapshot *snapshot);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Initialize support for AMI channel events.
|
* \brief Initialize support for AMI channel events.
|
||||||
* \return 0 on success.
|
* \return 0 on success.
|
||||||
|
@@ -232,18 +232,7 @@ static struct stasis_message_router *channel_state_router;
|
|||||||
</managerEvent>
|
</managerEvent>
|
||||||
***/
|
***/
|
||||||
|
|
||||||
/*!
|
struct ast_str *ast_manager_build_channel_state_string_suffix(
|
||||||
* \brief Generate the AMI message body from a channel snapshot
|
|
||||||
* \internal
|
|
||||||
*
|
|
||||||
* \param snapshot the channel snapshot for which to generate an AMI message
|
|
||||||
* body
|
|
||||||
* \param suffix the suffix to append to the channel fields
|
|
||||||
*
|
|
||||||
* \retval NULL on error
|
|
||||||
* \retval ast_str* on success (must be ast_freed by caller)
|
|
||||||
*/
|
|
||||||
static struct ast_str *manager_build_channel_state_string_suffix(
|
|
||||||
const struct ast_channel_snapshot *snapshot,
|
const struct ast_channel_snapshot *snapshot,
|
||||||
const char *suffix)
|
const char *suffix)
|
||||||
{
|
{
|
||||||
@@ -294,20 +283,10 @@ static struct ast_str *manager_build_channel_state_string_suffix(
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
struct ast_str *ast_manager_build_channel_state_string(
|
||||||
* \brief Generate the AMI message body from a channel snapshot
|
|
||||||
* \internal
|
|
||||||
*
|
|
||||||
* \param snapshot the channel snapshot for which to generate an AMI message
|
|
||||||
* body
|
|
||||||
*
|
|
||||||
* \retval NULL on error
|
|
||||||
* \retval ast_str* on success (must be ast_freed by caller)
|
|
||||||
*/
|
|
||||||
static struct ast_str *manager_build_channel_state_string(
|
|
||||||
const struct ast_channel_snapshot *snapshot)
|
const struct ast_channel_snapshot *snapshot)
|
||||||
{
|
{
|
||||||
return manager_build_channel_state_string_suffix(snapshot, "");
|
return ast_manager_build_channel_state_string_suffix(snapshot, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Struct containing info for an AMI channel event to send out. */
|
/*! \brief Struct containing info for an AMI channel event to send out. */
|
||||||
@@ -553,7 +532,7 @@ static void channel_snapshot_update(void *data, struct stasis_subscription *sub,
|
|||||||
/* If we haven't already, build the channel event string */
|
/* If we haven't already, build the channel event string */
|
||||||
if (!channel_event_string) {
|
if (!channel_event_string) {
|
||||||
channel_event_string =
|
channel_event_string =
|
||||||
manager_build_channel_state_string(new_snapshot);
|
ast_manager_build_channel_state_string(new_snapshot);
|
||||||
if (!channel_event_string) {
|
if (!channel_event_string) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -572,7 +551,7 @@ static void channel_varset(struct ast_channel_blob *obj)
|
|||||||
const char *value = ast_json_string_get(ast_json_object_get(obj->blob, "value"));
|
const char *value = ast_json_string_get(ast_json_object_get(obj->blob, "value"));
|
||||||
|
|
||||||
if (obj->snapshot) {
|
if (obj->snapshot) {
|
||||||
channel_event_string = manager_build_channel_state_string(obj->snapshot);
|
channel_event_string = ast_manager_build_channel_state_string(obj->snapshot);
|
||||||
} else {
|
} else {
|
||||||
channel_event_string = ast_str_create(35);
|
channel_event_string = ast_str_create(35);
|
||||||
ast_str_set(&channel_event_string, 0,
|
ast_str_set(&channel_event_string, 0,
|
||||||
@@ -614,7 +593,7 @@ static void channel_userevent(struct ast_channel_blob *obj)
|
|||||||
|
|
||||||
eventname = ast_json_string_get(ast_json_object_get(obj->blob, "eventname"));
|
eventname = ast_json_string_get(ast_json_object_get(obj->blob, "eventname"));
|
||||||
body = ast_json_string_get(ast_json_object_get(obj->blob, "body"));
|
body = ast_json_string_get(ast_json_object_get(obj->blob, "body"));
|
||||||
channel_event_string = manager_build_channel_state_string(obj->snapshot);
|
channel_event_string = ast_manager_build_channel_state_string(obj->snapshot);
|
||||||
|
|
||||||
if (!channel_event_string) {
|
if (!channel_event_string) {
|
||||||
return;
|
return;
|
||||||
@@ -654,7 +633,7 @@ static void channel_hangup_request(struct ast_channel_blob *obj)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
channel_event_string = manager_build_channel_state_string(obj->snapshot);
|
channel_event_string = ast_manager_build_channel_state_string(obj->snapshot);
|
||||||
|
|
||||||
if (!channel_event_string) {
|
if (!channel_event_string) {
|
||||||
return;
|
return;
|
||||||
@@ -721,13 +700,13 @@ static void channel_dial_cb(void *data, struct stasis_subscription *sub,
|
|||||||
|
|
||||||
/* Peer is required - otherwise, who are we dialing? */
|
/* Peer is required - otherwise, who are we dialing? */
|
||||||
ast_assert(peer != NULL);
|
ast_assert(peer != NULL);
|
||||||
peer_event_string = manager_build_channel_state_string_suffix(peer, "Dest");
|
peer_event_string = ast_manager_build_channel_state_string_suffix(peer, "Dest");
|
||||||
if (!peer_event_string) {
|
if (!peer_event_string) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (caller) {
|
if (caller) {
|
||||||
caller_event_string = manager_build_channel_state_string(caller);
|
caller_event_string = ast_manager_build_channel_state_string(caller);
|
||||||
if (!caller_event_string) {
|
if (!caller_event_string) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user