summaryrefslogtreecommitdiff
path: root/include/asterisk
diff options
context:
space:
mode:
authorDavid M. Lee <dlee@digium.com>2013-08-13 15:27:32 +0000
committerDavid M. Lee <dlee@digium.com>2013-08-13 15:27:32 +0000
commit987fdfb444aef3eb60041887db60b54e4e382293 (patch)
tree944be36f63794903977a210f530845d230a23f05 /include/asterisk
parent94ee8f2e33f6d6e80c3fc6d64d04883fec9496f1 (diff)
ARI: allow other operations to happen while bridged
This patch changes ARI bridging to allow other channel operations to happen while the channel is bridged. ARI channel operations are designed to queue up and execute sequentially. This meant, though, that while a channel was bridged, any other channel operations would queue up and execute only after the channel left the bridge. This patch changes ARI bridging so that channel commands can execute while the channel is bridged. For most operations, things simply work as expected. The one thing that ended up being a bit odd is recording. The current recording implementation will fail when one attempts to record a channel that's in a bridge. Note that the bridge itself may be recording; it's recording a specific channel in the bridge that fails. While this is an annoying limitation, channel recording is still very useful for use cases such as voice mail, and bridge recording makes up much of the difference for other use cases. (closes issue ASTERISK-22084) Review: https://reviewboard.asterisk.org/r/2726/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396568 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk')
-rw-r--r--include/asterisk/bridge_features.h2
-rw-r--r--include/asterisk/bridge_internal.h1
-rw-r--r--include/asterisk/stasis_app.h5
-rw-r--r--include/asterisk/stasis_app_impl.h10
4 files changed, 14 insertions, 4 deletions
diff --git a/include/asterisk/bridge_features.h b/include/asterisk/bridge_features.h
index 7590d8af8..ba3cee4e9 100644
--- a/include/asterisk/bridge_features.h
+++ b/include/asterisk/bridge_features.h
@@ -25,6 +25,8 @@
#ifndef _ASTERISK_BRIDGING_FEATURES_H
#define _ASTERISK_BRIDGING_FEATURES_H
+#include "asterisk/channel.h"
+
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
diff --git a/include/asterisk/bridge_internal.h b/include/asterisk/bridge_internal.h
index 18ef56e96..4ff2fd2aa 100644
--- a/include/asterisk/bridge_internal.h
+++ b/include/asterisk/bridge_internal.h
@@ -36,6 +36,7 @@
struct ast_bridge;
struct ast_bridge_channel;
+struct ast_bridge_methods;
/*!
* \brief Register the new bridge with the system.
diff --git a/include/asterisk/stasis_app.h b/include/asterisk/stasis_app.h
index 87b4bdb41..d0ea01080 100644
--- a/include/asterisk/stasis_app.h
+++ b/include/asterisk/stasis_app.h
@@ -348,11 +348,8 @@ void stasis_app_control_add_channel_to_bridge(
*
* \param control Control whose channel should be removed from the bridge
* \param bridge Pointer to the bridge
- *
- * \retval non-zero on failure
- * \retval zero on success
*/
-int stasis_app_control_remove_channel_from_bridge(
+void stasis_app_control_remove_channel_from_bridge(
struct stasis_app_control *control, struct ast_bridge *bridge);
/*!
diff --git a/include/asterisk/stasis_app_impl.h b/include/asterisk/stasis_app_impl.h
index d4b467756..e9b93a84a 100644
--- a/include/asterisk/stasis_app_impl.h
+++ b/include/asterisk/stasis_app_impl.h
@@ -85,4 +85,14 @@ void *stasis_app_send_command(struct stasis_app_control *control,
int stasis_app_send_command_async(struct stasis_app_control *control,
stasis_app_command_cb command, void *data);
+/*!
+ * \since 12
+ * \brief Gets the bridge currently associated with a control object.
+ *
+ * \param control Control object for the channel to query.
+ * \return Associated \ref ast_bridge.
+ * \return \c NULL if not associated with a bridge.
+ */
+struct ast_bridge *stasis_app_get_bridge(struct stasis_app_control *control);
+
#endif /* _ASTERISK_RES_STASIS_H */