diff options
Diffstat (limited to 'include/asterisk')
-rw-r--r-- | include/asterisk/json.h | 21 | ||||
-rw-r--r-- | include/asterisk/manager.h | 12 | ||||
-rw-r--r-- | include/asterisk/message.h | 147 |
3 files changed, 175 insertions, 5 deletions
diff --git a/include/asterisk/json.h b/include/asterisk/json.h index 6ceeb0b86..8cb74a459 100644 --- a/include/asterisk/json.h +++ b/include/asterisk/json.h @@ -1010,6 +1010,27 @@ struct ast_party_id; */ struct ast_json *ast_json_party_id(struct ast_party_id *party); +/*! + * \brief Convert a \c ast_json list of key/value pair tuples into a \c ast_variable list + * \since 12.5.0 + * + * \param json_variables The JSON blob containing the variable + * \param variables An out reference to the variables to populate. + * The pointer to the variables should be NULL when calling this. + * + * \code + * struct ast_json *json_variables = ast_json_pack("[ { s: s } ]", "foo", "bar"); + * struct ast_variable *variables = NULL; + * int res; + * + * res = ast_json_to_ast_variables(json_variables, &variables); + * \endcode + * + * \retval 0 success + * \retval -1 error + */ +int ast_json_to_ast_variables(struct ast_json *json_variables, struct ast_variable **variables); + /*!@}*/ #endif /* _ASTERISK_JSON_H */ diff --git a/include/asterisk/manager.h b/include/asterisk/manager.h index fad7af1e7..dda2e5439 100644 --- a/include/asterisk/manager.h +++ b/include/asterisk/manager.h @@ -94,8 +94,16 @@ /*! \brief Export manager structures */ #define AST_MAX_MANHEADERS 128 -/*! \brief Manager Helper Function */ -typedef int (*manager_hook_t)(int, const char *, char *); +/*! \brief Manager Helper Function + * + * \param category The class authorization category of the event + * \param event The name of the event being raised + * \param body The body of the event + * + * \retval 0 Success + * \retval non-zero Error + */ +typedef int (*manager_hook_t)(int category, const char *event, char *body); struct manager_custom_hook { /*! Identifier */ diff --git a/include/asterisk/message.h b/include/asterisk/message.h index 7e5c77a6a..f81574c9b 100644 --- a/include/asterisk/message.h +++ b/include/asterisk/message.h @@ -25,8 +25,9 @@ * * The purpose of this API is to provide support for text messages that * are not session based. The messages are passed into the Asterisk core - * to be routed through the dialplan and potentially sent back out through - * a message technology that has been registered through this API. + * to be routed through the dialplan or another interface and potentially + * sent back out through a message technology that has been registered + * through this API. */ #ifndef __AST_MESSAGE_H__ @@ -91,6 +92,64 @@ int ast_msg_tech_register(const struct ast_msg_tech *tech); int ast_msg_tech_unregister(const struct ast_msg_tech *tech); /*! + * \brief An external processor of received messages + * \since 12.5.0 + */ +struct ast_msg_handler { + /*! + * \brief Name of the message handler + */ + const char *name; + + /*! + * \brief The function callback that will handle the message + * + * \param msg The message to handle + * + * \retval 0 The handler processed the message successfull + * \retval non-zero The handler passed or could not process the message + */ + int (* const handle_msg)(struct ast_msg *msg); + + /*! + * \brief Return whether or not the message has a valid destination + * + * A message may be delivered to the dialplan and/or other locations, + * depending on whether or not other handlers have been registered. This + * function is called by the message core to determine if any handler can + * process a message. + * + * \param msg The message to inspect + * + * \retval 0 The message does not have a valid destination + * \retval 1 The message has a valid destination + */ + int (* const has_destination)(const struct ast_msg *msg); +}; + +/*! + * \brief Register a \c ast_msg_handler + * \since 12.5.0 + * + * \param handler The handler to register + * + * \retval 0 Success + * \retval non-zero Error + */ +int ast_msg_handler_register(const struct ast_msg_handler *handler); + +/*! + * \brief Unregister a \c ast_msg_handler + * \since 12.5.0 + * + * \param handler The handler to unregister + * + * \retval 0 Success + * \retval non-zero Error + */ +int ast_msg_handler_unregister(const struct ast_msg_handler *handler); + +/*! * \brief Allocate a message. * * Allocate a message for the purposes of passing it into the Asterisk core @@ -162,7 +221,29 @@ int __attribute__((format(printf, 2, 3))) */ int __attribute__((format(printf, 2, 3))) ast_msg_set_exten(struct ast_msg *msg, const char *fmt, ...); - + +/*! + * \brief Set the technology associated with this message + * + * \since 12.5.0 + * + * \retval 0 success + * \retval -1 failure + */ +int __attribute__((format(printf, 2, 3))) + ast_msg_set_tech(struct ast_msg *msg, const char *fmt, ...); + +/*! + * \brief Set the technology's endpoint associated with this message + * + * \since 12.5.0 + * + * \retval 0 success + * \retval -1 failure + */ +int __attribute__((format(printf, 2, 3))) + ast_msg_set_endpoint(struct ast_msg *msg, const char *fmt, ...); + /*! * \brief Set a variable on the message going to the dialplan. * \note Setting a variable that already exists overwrites the existing variable value @@ -209,6 +290,66 @@ const char *ast_msg_get_var(struct ast_msg *msg, const char *name); const char *ast_msg_get_body(const struct ast_msg *msg); /*! + * \brief Retrieve the source of this message + * + * \since 12.5.0 + * + * \param msg The message to get the soure from + * + * \retval The source of the message + * \retval NULL or empty string if the message has no source + */ +const char *ast_msg_get_from(const struct ast_msg *msg); + +/*! + * \brief Retrieve the destination of this message + * + * \since 12.5.0 + * + * \param msg The message to get the destination from + * + * \retval The destination of the message + * \retval NULL or empty string if the message has no destination + */ +const char *ast_msg_get_to(const struct ast_msg *msg); + +/*! + * \brief Retrieve the technology associated with this message + * + * \since 12.5.0 + * + * \param msg The message to get the technology from + * + * \retval The technology of the message + * \retval NULL or empty string if the message has no associated technology + */ +const char *ast_msg_get_tech(const struct ast_msg *msg); + +/*! + * \brief Retrieve the endpoint associated with this message + * + * \since 12.5.0 + * + * \param msg The message to get the endpoint from + * + * \retval The endpoint associated with the message + * \retval NULL or empty string if the message has no associated endpoint + */ +const char *ast_msg_get_endpoint(const struct ast_msg *msg); + +/*! + * \brief Determine if a particular message has a destination via some handler + * + * \since 12.5.0 + * + * \param msg The message to check + * + * \retval 0 if the message has no handler that can find a destination + * \retval 1 if the message has a handler that can find a destination + */ +int ast_msg_has_destination(const struct ast_msg *msg); + +/*! * \brief Queue a message for routing through the dialplan. * * Regardless of the return value of this function, this funciton will take |