mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-08 06:12:45 +00:00
Revert "Revert "Add API for channel frame deferral.""
This reverts commit 6b5a7ced13
.
Change-Id: I61d1dbb2e69e1977f684b7dfc8e98211024e1cd1
This commit is contained in:
@@ -966,6 +966,11 @@ enum {
|
||||
* The channel is executing a subroutine or macro
|
||||
*/
|
||||
AST_FLAG_SUBROUTINE_EXEC = (1 << 27),
|
||||
/*!
|
||||
* The channel is currently in an operation where
|
||||
* frames should be deferred.
|
||||
*/
|
||||
AST_FLAG_DEFER_FRAMES = (1 << 28),
|
||||
};
|
||||
|
||||
/*! \brief ast_bridge_config flags */
|
||||
@@ -4681,4 +4686,37 @@ enum ast_channel_error {
|
||||
*/
|
||||
enum ast_channel_error ast_channel_errno(void);
|
||||
|
||||
/*!
|
||||
* \brief Retrieve the deferred read queue.
|
||||
*/
|
||||
struct ast_readq_list *ast_channel_deferred_readq(struct ast_channel *chan);
|
||||
|
||||
/*!
|
||||
* \brief Start deferring deferrable frames on this channel
|
||||
*
|
||||
* Sometimes, a channel gets entered into a mode where a "main" application
|
||||
* is tasked with servicing frames on the channel, but that application does
|
||||
* not need to act on those frames. However, it would be imprudent to simply
|
||||
* drop important frames. This function can be called so that important frames
|
||||
* will be deferred, rather than placed in the channel frame queue as normal.
|
||||
*
|
||||
* \pre chan MUST be locked before calling
|
||||
*
|
||||
* \param chan The channel on which frames should be deferred
|
||||
*/
|
||||
void ast_channel_start_defer_frames(struct ast_channel *chan);
|
||||
|
||||
/*!
|
||||
* \brief Stop deferring deferrable frames on this channel
|
||||
*
|
||||
* When it is time to stop deferring frames on the channel, all deferred frames
|
||||
* will be queued onto the channel's read queue so that the next servicer of
|
||||
* the channel can handle those frames as necessary.
|
||||
*
|
||||
* \pre chan MUST be locked before calling
|
||||
*
|
||||
* \param chan The channel on which to stop deferring frames.
|
||||
*/
|
||||
void ast_channel_stop_defer_frames(struct ast_channel *chan);
|
||||
|
||||
#endif /* _ASTERISK_CHANNEL_H */
|
||||
|
Reference in New Issue
Block a user