Merge "bridge: Add a deferred queue."

This commit is contained in:
Joshua Colp
2017-06-15 15:02:26 -05:00
committed by Gerrit Code Review
8 changed files with 397 additions and 10 deletions
+2
View File
@@ -145,6 +145,8 @@ struct ast_bridge_channel {
AST_LIST_ENTRY(ast_bridge_channel) entry;
/*! Queue of outgoing frames to the channel. */
AST_LIST_HEAD_NOLOCK(, ast_frame) wr_queue;
/*! Queue of deferred frames, queued onto channel when other party joins. */
AST_LIST_HEAD_NOLOCK(, ast_frame) deferred_queue;
/*! Pipe to alert thread when frames are put into the wr_queue. */
int alert_pipe[2];
/*!
@@ -96,6 +96,17 @@ struct ast_bridge_channel *bridge_channel_internal_alloc(struct ast_bridge *brid
*/
void bridge_channel_settle_owed_events(struct ast_bridge *orig_bridge, struct ast_bridge_channel *bridge_channel);
/*!
* \internal
* \brief Queue any deferred frames on the channel.
* \since 13.17.0
*
* \param bridge_channel Channel that the deferred frames should be pulled from and queued to.
*
* \return Nothing
*/
void bridge_channel_queue_deferred_frames(struct ast_bridge_channel *bridge_channel);
/*!
* \internal
* \brief Push the bridge channel into its specified bridge.
+3
View File
@@ -156,6 +156,9 @@ struct ast_bridge_technology {
* \retval -1 Frame needs to be deferred.
*
* \note On entry, bridge is already locked.
*
* \note Deferred frames will be automatically queued onto the channel when another
* channel joins the bridge.
*/
int (*write)(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, struct ast_frame *frame);
/*!