mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-09 14:36:48 +00:00
Fix several interrelated issues dealing with the holding bridge technology.
* Added an option flags parameter to interval hooks. Interval hooks now can specify if the callback will affect the media path or not. * Added an option flags parameter to the bridge action custom callback. The action callback now can specify if the callback will affect the media path or not. * Made the holding bridge technology reexamine the participant idle mode option whenever the entertainment is restarted. * Fixed app_agent_pool waiting agents needlessly starting and stopping MOH every second by specifying the heartbeat interval hook as not affecting the media path. * Fixed app_agent_pool agent alert from restarting the MOH after the alert beep. The agent entertainment is now changed from MOH to silence after the alert beep. * Fixed holding bridge technology to defer starting the entertainment. It was previously a mixture of immediate and deferred. * Fixed holding bridge technology to immediately stop the entertainment. It was previously a mixture of immediate and deferred. If the channel left the bridging system, any deferred stopping was discarded before taking effect. * Miscellaneous holding bridge technology rework coding improvements. Review: https://reviewboard.asterisk.org/r/2761/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@397294 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -530,11 +530,17 @@ int ast_bridge_channel_queue_playfile(struct ast_bridge_channel *bridge_channel,
|
||||
*/
|
||||
typedef void (*ast_bridge_custom_callback_fn)(struct ast_bridge_channel *bridge_channel, const void *payload, size_t payload_size);
|
||||
|
||||
enum ast_bridge_channel_custom_callback_option {
|
||||
/*! The callback temporarily affects media. (Like a custom playfile.) */
|
||||
AST_BRIDGE_CHANNEL_CB_OPTION_MEDIA = (1 << 0),
|
||||
};
|
||||
|
||||
/*!
|
||||
* \brief Write a bridge action custom callback frame into the bridge.
|
||||
* \since 12.0.0
|
||||
*
|
||||
* \param bridge_channel Which channel is putting the frame into the bridge
|
||||
* \param flags Custom callback option flags.
|
||||
* \param callback Custom callback run on a bridge channel.
|
||||
* \param payload Data to pass to the callback. (NULL if none).
|
||||
* \param payload_size Size of the payload if payload is non-NULL. A number otherwise.
|
||||
@@ -546,13 +552,16 @@ typedef void (*ast_bridge_custom_callback_fn)(struct ast_bridge_channel *bridge_
|
||||
* \retval 0 on success.
|
||||
* \retval -1 on error.
|
||||
*/
|
||||
int ast_bridge_channel_write_callback(struct ast_bridge_channel *bridge_channel, ast_bridge_custom_callback_fn callback, const void *payload, size_t payload_size);
|
||||
int ast_bridge_channel_write_callback(struct ast_bridge_channel *bridge_channel,
|
||||
enum ast_bridge_channel_custom_callback_option flags,
|
||||
ast_bridge_custom_callback_fn callback, const void *payload, size_t payload_size);
|
||||
|
||||
/*!
|
||||
* \brief Queue a bridge action custom callback frame onto the bridge channel.
|
||||
* \since 12.0.0
|
||||
*
|
||||
* \param bridge_channel Which channel to put the frame onto.
|
||||
* \param flags Custom callback option flags.
|
||||
* \param callback Custom callback run on a bridge channel.
|
||||
* \param payload Data to pass to the callback. (NULL if none).
|
||||
* \param payload_size Size of the payload if payload is non-NULL. A number otherwise.
|
||||
@@ -564,7 +573,9 @@ int ast_bridge_channel_write_callback(struct ast_bridge_channel *bridge_channel,
|
||||
* \retval 0 on success.
|
||||
* \retval -1 on error.
|
||||
*/
|
||||
int ast_bridge_channel_queue_callback(struct ast_bridge_channel *bridge_channel, ast_bridge_custom_callback_fn callback, const void *payload, size_t payload_size);
|
||||
int ast_bridge_channel_queue_callback(struct ast_bridge_channel *bridge_channel,
|
||||
enum ast_bridge_channel_custom_callback_option flags,
|
||||
ast_bridge_custom_callback_fn callback, const void *payload, size_t payload_size);
|
||||
|
||||
/*!
|
||||
* \brief Have a bridge channel park a channel in the bridge
|
||||
|
Reference in New Issue
Block a user