ARI: Make bridges/{bridgeID}/play queue sound files

Previously multiple play actions against a bridge at one time would cause
the sounds to play simultaneously on the bridge. Now if a sound is already
playing, the play action will queue playback to occur after the completion
of other sounds currently on the queue.

(closes issue ASTERISK-22677)
Reported by: John Bigelow
Review: https://reviewboard.asterisk.org/r/3379/
........

Merged revisions 412639 from http://svn.asterisk.org/svn/asterisk/branches/12


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@412641 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Jonathan Rose
2014-04-18 20:09:24 +00:00
parent 06657c92e6
commit b9d7dfcc62
11 changed files with 677 additions and 68 deletions

View File

@@ -374,6 +374,15 @@ void stasis_app_control_execute_until_exhausted(
struct ast_channel *chan,
struct stasis_app_control *control);
/*!
* \brief Check if a control is marked as done
* \since 12.2.0
*
* \param control Which control object is being evaluated
*/
int stasis_app_control_is_done(
struct stasis_app_control *control);
/*!
* \brief Returns the uniqueid of the channel associated with this control
*
@@ -637,6 +646,30 @@ struct ast_channel *stasis_app_bridge_moh_channel(
int stasis_app_bridge_moh_stop(
struct ast_bridge *bridge);
/*!
* \brief Finds an existing ARI playback channel in a bridge
*
* \param bridge Bridge we want to find the playback channel for
*
* \return NULL if the playback channel can not be found for any reason.
* \return Pointer to the ;1 end of the playback channel chain.
*/
struct ast_channel *stasis_app_bridge_playback_channel_find(
struct ast_bridge *bridge);
/*!
* \brief Adds a channel to the list of ARI playback channels for bridges.
*
* \param bridge Bridge we are adding the playback channel for
* \param chan Channel being added as a playback channel (must be ;1)
*
* \retval -1 failed to add channel for any reason
* \retval 0 on success
*/
int stasis_app_bridge_playback_channel_add(struct ast_bridge *bridge,
struct ast_channel *chan,
struct stasis_app_control *control);
/*!
* \brief Result codes used when adding/removing channels to/from bridges.
*/