Manager: Short circuit AMI message processing.

Improve AMI message processing performance if there are no consumers
listening for the messages.  We now skip creating the AMI event message
text strings.

Change-Id: I7b22fc5ec4e500d00635c1a467aa8ea68a1bb2b3
This commit is contained in:
Richard Mudgett
2016-04-12 15:29:52 -05:00
parent d5ee6acf28
commit ba63aa7c9e
3 changed files with 153 additions and 38 deletions

View File

@@ -416,14 +416,14 @@ const struct timeval *stasis_message_timestamp(const struct stasis_message *msg)
* May return \c NULL, to indicate no representation. The returned object should
* be ast_json_unref()'ed.
*
* \param message Message to convert to JSON string.
* \param msg Message to convert to JSON string.
* \param sanitize Snapshot sanitization callback.
*
* \return Newly allocated string with JSON message.
* \return \c NULL on error.
* \return \c NULL if JSON format is not supported.
*/
struct ast_json *stasis_message_to_json(struct stasis_message *message, struct stasis_message_sanitizer *sanitize);
struct ast_json *stasis_message_to_json(struct stasis_message *msg, struct stasis_message_sanitizer *sanitize);
/*!
* \brief Build the AMI representation of the message.
@@ -431,12 +431,21 @@ struct ast_json *stasis_message_to_json(struct stasis_message *message, struct s
* May return \c NULL, to indicate no representation. The returned object should
* be ao2_cleanup()'ed.
*
* \param message Message to convert to AMI.
* \param msg Message to convert to AMI.
* \return \c NULL on error.
* \return \c NULL if AMI format is not supported.
*/
struct ast_manager_event_blob *stasis_message_to_ami(
struct stasis_message *message);
struct ast_manager_event_blob *stasis_message_to_ami(struct stasis_message *msg);
/*!
* \brief Determine if the given message can be converted to AMI.
*
* \param msg Message to see if can be converted to AMI.
*
* \retval 0 Cannot be converted
* \retval non-zero Can be converted
*/
int stasis_message_can_be_ami(struct stasis_message *msg);
/*!
* \brief Build the \ref AstGenericEvents representation of the message.
@@ -444,12 +453,11 @@ struct ast_manager_event_blob *stasis_message_to_ami(
* May return \c NULL, to indicate no representation. The returned object should
* be disposed of via \ref ast_event_destroy.
*
* \param message Message to convert to AMI.
* \param msg Message to convert to AMI.
* \return \c NULL on error.
* \return \c NULL if AMI format is not supported.
*/
struct ast_event *stasis_message_to_event(
struct stasis_message *message);
struct ast_event *stasis_message_to_event(struct stasis_message *msg);
/*! @} */