diff options
Diffstat (limited to 'include/asterisk/stasis_app.h')
-rw-r--r-- | include/asterisk/stasis_app.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/include/asterisk/stasis_app.h b/include/asterisk/stasis_app.h index 0c22a6c30..56e039b43 100644 --- a/include/asterisk/stasis_app.h +++ b/include/asterisk/stasis_app.h @@ -277,6 +277,60 @@ enum stasis_app_subscribe_res stasis_app_unsubscribe(const char *app_name, /*! \brief Handler for controlling a channel that's in a Stasis application */ struct stasis_app_control; +/*! \brief Rule to check to see if an operation is allowed */ +struct stasis_app_control_rule { + /*! + * \brief Checks to see if an operation is allowed on the control + * + * \param control Control object to check + * \return 0 on success, otherwise a failure code + */ + enum stasis_app_control_channel_result (*check_rule)( + const struct stasis_app_control *control); + /*! Next item in the list */ + AST_LIST_ENTRY(stasis_app_control_rule) next; +}; + +/*! + * \brief Registers an add channel to bridge rule. + * + * \param control Control object + * \param rule The rule to register + */ +void stasis_app_control_register_add_rule( + struct stasis_app_control *control, + struct stasis_app_control_rule *rule); + +/*! + * \brief UnRegister an add channel to bridge rule. + * + * \param control Control object + * \param rule The rule to unregister + */ +void stasis_app_control_unregister_add_rule( + struct stasis_app_control *control, + struct stasis_app_control_rule *rule); + +/*! + * \brief Registers a remove channel from bridge rule. + * + * \param control Control object + * \param rule The rule to register + */ +void stasis_app_control_register_remove_rule( + struct stasis_app_control *control, + struct stasis_app_control_rule *rule); + +/*! + * \brief Unregisters a remove channel from bridge rule. + * + * \param control Control object + * \param rule The rule to unregister + */ +void stasis_app_control_unregister_remove_rule( + struct stasis_app_control *control, + struct stasis_app_control_rule *rule); + /*! * \brief Returns the handler for the given channel. * \param chan Channel to handle. @@ -582,6 +636,16 @@ int stasis_app_bridge_moh_stop( struct ast_bridge *bridge); /*! + * \brief Result codes used when adding/removing channels to/from bridges. + */ +enum stasis_app_control_channel_result { + /*! The channel is okay to be added/removed */ + STASIS_APP_CHANNEL_OKAY = 0, + /*! The channel is currently recording */ + STASIS_APP_CHANNEL_RECORDING +}; + +/*! * \brief Add a channel to the bridge. * * \param control Control whose channel should be added to the bridge |