[asterisk-scf-commits] asterisk-scf/integration/slice.git branch "dtmf" updated.

Commits to the Asterisk SCF project code repositories asterisk-scf-commits at lists.digium.com
Tue Aug 2 10:20:48 CDT 2011


branch "dtmf" has been updated
       via  5be6e80e1297b54417fbe4e397c6e1a001dff0f7 (commit)
       via  4e86b2abd950c20d045571d800e3e339f27f7195 (commit)
       via  17e108dddff06d03a063458509fffaaed5dac2c1 (commit)
       via  4f8144731b8d8bea448ebf03522988059e99e013 (commit)
       via  e1d951b9e26e74d39343d90bdd0fbfdb24ce1622 (commit)
       via  1e6fbb3b7ecbe6e09c8a036444417ba81bf6e4fc (commit)
       via  1e4a200895905b4daad524073b559e1c6a20c058 (commit)
       via  316e80013a1a1af9e010ab176375f2f7da956f0c (commit)
       via  301511a730689ef97b5a0ad0ac7253764bc0ceb1 (commit)
       via  f521d81df6506d98720689f7f59715e21dbf12c3 (commit)
       via  066d644817a1b66fded5c451a01bf8c909d49808 (commit)
       via  746b04090e0417866c65a177aa9d557d33f180d2 (commit)
       via  3ba802dfb6aadc72cf220bc94055fba327a35e93 (commit)
       via  58527682560c3bb61a507bccff6e6ce8ea0e0b63 (commit)
       via  3d9627788925c83576d30c515611d52b3b89cf90 (commit)
       via  a1c7095470e0837cddf06392600f4ded75621c7d (commit)
       via  3210fdee32fe530ab3c510722e1f074673e54d98 (commit)
       via  87084086ac652c2d78a08e4303b040c617a460d2 (commit)
       via  ad5c63f72a7592846b2ea4e6eafeacb3a079a940 (commit)
       via  c5b274b221ab70df08aecfd7cf0414e9e1cb1375 (commit)
       via  a9820ac200df8d31eea60dd4fea5f27d5987f85c (commit)
       via  d735f01dfafdee853aceb6ffb7e9d41b4047d95a (commit)
       via  6e2fa7c0124c66217fd422dc71177fcb8d7c3fff (commit)
       via  385ee4248b0b73bf5f78bdc66f63a29e06d3d8a5 (commit)
       via  8774a9fee9cebfb35ae9cae57c578ac2047f75af (commit)
       via  1b9a00c4ab6cd1deba0f1b5a7065c65fb0e77c7b (commit)
       via  34d7d68a7933919c12f0837f24a84671ce831bd5 (commit)
       via  bbefb33d7f5aafedb676a8bbcce0f495b1e3d159 (commit)
       via  863a4d15040d81066190aaec25582d0879f7ddfc (commit)
       via  9172702f44da2ad07a57f5f13a9077e5455e84d8 (commit)
       via  859c5a97058b8d0f724cc4ceabf0ce6e9cbffa14 (commit)
       via  2697abafb9071200a2d3074e0533db1c7df9925d (commit)
       via  084e46ffda7556c95fae03bebb2043360cbbab6e (commit)
       via  ba6560f6ed82d3d3ba516f0edc701fc76137a4be (commit)
       via  0e0fe974f7a7dd7334086130c66a69fe4b94fa69 (commit)
       via  c84291bee35dfbedfd168ba7ec05a9359f7138f2 (commit)
       via  4141894df15013891636c53d85259b2990b1f9df (commit)
       via  3106bf50bdeb121c64f91629a0a0d97e8f2b5178 (commit)
       via  f7cf79616da10d9a930bde78671c374746d85f00 (commit)
       via  5f3b94870308be2ea63413e2b1515efbb948ec4b (commit)
       via  f1052695108533af3df3e4ff0054a60dd968598b (commit)
       via  05556bf8836d212589eebf250ff253f86a1c52da (commit)
       via  57ab22659d7829b6b4ef6c4e966beab848273282 (commit)
       via  0826cb24a021ca60e1026932a14f7dbd6a55da09 (commit)
       via  2961fe4437f85e17d62cecf3cd207ad01d5a4ceb (commit)
       via  7e8760dd3d7de497fedadf3589c3debd03d35d9d (commit)
       via  3e3468a598e3dae4fd3047bc95b83d411432e6ca (commit)
       via  57a4c6202d356e944d6ed630fb4da5e9ef6e0ad2 (commit)
       via  f1a8af8d8e9ffc51c67e011440147fe7e56f9c10 (commit)
       via  9b253f6413361a6f9856e37196cf1159a4ba54ff (commit)
       via  eab1888ebc6c01463d045ec31125be608e1dd8dd (commit)
       via  feef14224dc27656a857e94d8d12da3950d9e4b2 (commit)
       via  9edb08a626fbb57b8584a1b7d438e5d4ef128e71 (commit)
       via  a56480967f353ad72ac0750646e4e3a4486ce691 (commit)
       via  a47ca502ce1e6dca6833bb2914fa29e0afa77384 (commit)
       via  687d842f88cb5302f05190d5fcb16d84b97e020b (commit)
       via  d431a9f19268bdf772acc6960c3acc4ed67697b7 (commit)
       via  1b09086bfce57fab13b27c3018791a56311f8943 (commit)
       via  7eb5ee6acbcc2abec8590f15efde23cc62f097c6 (commit)
       via  f7676e99cd267657e65a233b0b07b0b225e3b8ba (commit)
       via  e5cd7118d887096e0fbaef25d433a5be7a8e2341 (commit)
       via  01f50ffc657af8c961be5461b02663d9473c7e66 (commit)
       via  bb0fe22eb27c0744b020e7d7b74a589261eb528e (commit)
       via  05e245ef7614b5f2ab3b2dfadd2ad1aa100952c9 (commit)
       via  4af55933ca352d394f061566fabdb17fe1819fe9 (commit)
       via  131f6d92c009e34dc41b79b076200876883cc34b (commit)
       via  ae69d3aad2b90b621d89de835fe8788dc1fe979b (commit)
       via  8508ac568a89f2c64c1bdbd26e200ec5c79b94d3 (commit)
       via  6c301dcd45e664fa3b31e981d1ec4f7889aa5559 (commit)
       via  c839c3e76d6b3f1a96bd93126c071bbd672c3381 (commit)
       via  ef35c13e7a97a4d7051c057d56ba7af8eb4e0019 (commit)
       via  e2b00970bce930cf3cafe5203aa459ddd1af308f (commit)
       via  8766c305ac188e3d7b196a420cb6f0a9ffb6e4d0 (commit)
       via  96d0ce2307bc2794b25b7b086ad7bcbf4c1b354a (commit)
       via  70c5318d3f020014d8169508998c23749ecf01b2 (commit)
       via  42649f043da0d2d9f781a4abc1699b930ed23a94 (commit)
       via  efd8f9ec73bca6cd1b092a390555bad7d41d7b90 (commit)
      from  99491b94b0f6447012d5ae02ebc8ce22cd1a383e (commit)

Summary of changes:
 slice/AsteriskSCF/Media/MediaIf.ice                |   40 ++
 slice/AsteriskSCF/Media/RTP/MediaRTCPIf.ice        |  216 +++++++++++
 slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice         |  168 +++++++--
 .../SessionCommunicationsExtensionPointsIf.ice     |   85 +++++
 .../SessionCommunicationsIf.ice                    |  213 +++++++++++
 slice/AsteriskSCF/System/ExceptionsIf.ice          |    5 +
 slice/AsteriskSCF/System/NAT/NATTraversalIf.ice    |  391 ++++++++++++++++++++
 7 files changed, 1077 insertions(+), 41 deletions(-)
 create mode 100644 slice/AsteriskSCF/Media/RTP/MediaRTCPIf.ice
 create mode 100644 slice/AsteriskSCF/SessionCommunications/SessionCommunicationsExtensionPointsIf.ice
 create mode 100644 slice/AsteriskSCF/System/NAT/NATTraversalIf.ice


- Log -----------------------------------------------------------------
commit 5be6e80e1297b54417fbe4e397c6e1a001dff0f7
Merge: 4e86b2a 99491b9
Author: Mark Michelson <mmichelson at digium.com>
Date:   Tue Aug 2 10:21:33 2011 -0500

    Merge branch 'dtmf' of git.asterisk.org:asterisk-scf/integration/slice into dtmf
    
    Conflicts:
    	slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice

diff --cc slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice
index ff9b4c8,3d282e1..c0aa242
--- a/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice
+++ b/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice
@@@ -184,83 -177,6 +184,82 @@@ module V
      };
  
     /**
 +    * Indicates that the SRTP functionality is not available at the moment. 
 +    */
 +   exception SRTPUnavailable
 +   {
 +   };
 +
 +   /**
 +    * General exception to indicate that attempts to establish an SRTP enabled flow have failed.
 +    */
 +   exception SRTPFailure
 +   {
 +   };
 +
 +   /**
 +    * Exception indicating the session has already started.
 +    */
 +   exception SRTPAlreadyStarted
 +   {
 +   };
 +
 +   /**
 +    * Interface to an SRTP enabled RTP session.
 +    */
 +   interface SRTPSession extends RTPSession
 +   {
 +
 +       /**
 +        *
 +        * Set the key information for the local endpoint. 
 +        *
 +        * @param suiteName The type of crypto suite to be used.
 +        *
 +        * @param keyInfo The key for the specified crypto suite (may be empty).
 +        * 
 +        * @param enableAuthentication Specify that the connection should be authenticated.
 +        *
 +        * @param enableEncryption Specify that the RTP flows should be encrypted.
 +        *
 +        * @throws SRTPUnavailable if the SRTP functionality is unavailable at the moment, really should not happen.
 +        *
 +        */
 +       void setOptions(string suiteName, string keyInfo, bool enableAuthentication, bool enableEncryption) 
 +           throws SRTPUnavailable;
 +
 +       /**
 +        * Set the key information and initiates communication with peer.
 +        * 
 +        * @param suiteName The type of crypto suite to be used.
 +        *
 +        * @param keyInfo The key for the specified crypto suite (may be empty).
 +        * 
 +        * @param enableAuthentication Specify that the connection should be authenticated.
 +        *
 +        * @param enableEncryption Specify that the RTP flows should be encrypted.
 +        *
 +        * @throws SRTPUnavailable if the SRTP functionality is unavailable at the moment, really should not happen.
 +        *
 +        * @throws SRTPFailure if authentication/encryption with the peer has failed.
 +        * 
 +        * @throws SRTPAlreadyStarted if this is a duplicate call to start.
 +        *
 +        */
 +       void start(string suiteName, string keyInfo, bool enableAuthentication, bool enableEncryption) throws
 +           SRTPUnavailable, SRTPFailure, SRTPAlreadyStarted;
 +   };
 +
 +   /**
 +    * This exception will be thrown by the media service if the session cannot be allocated for some
 +    * reason. It shall include a descriptive message as to why the request failed.
 +    */
 +   exception SessionAllocationFailure
 +   {
 +       string message;
 +   };
 +
- 
 +   /**
      * Interface to an RTP media service.
      */
     interface RTPMediaService
diff --cc slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 7fbcd4e,b75c09a..07f2ead
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@@ -522,151 -466,76 +522,233 @@@ module V
           * @throws NotBridged if the session is not currently in a bridge.
           */
          ["amd"] void removeBridge(SessionListener* listener) throws NotBridged;
 +
 +        /**
 +         * Method which sets the session controller proxy to be contacted when actions
 +         * that occur on the session require controller intervention or notification.
 +         *
 +         * Multiple controllers are not supported on a session due to the fact that the
 +         * actions occuring on the SessionController interface are critical and supporting
 +         * multiple controllers would lead to state information becoming out of sync between
 +         * controllers.
 +         *
 +         * This method returns a proxy to a SessionController interface implemented by
 +         * the session so it can also perform controller intervention and receive
 +         * notification from the component that passed in the SessionController.
 +         *
 +         * @param controller A proxy to the SessionController object implemented by the caller.
 +         *
 +         * @return SessionController* A proxy to the session controller implemented by
 +         *       the session.
 +         *
 +         * @throws ControllerAlreadySet if a controller is present already.
 +         *
 +         * @see SessionController
 +         */
 +        ["amd"] SessionController *setAndGetSessionController(SessionController* controller) throws
 +            ControllerAlreadySet;
 +
 +        /**
 +         * Method which removes a session controller from a session.
 +         *
 +         * If the passed in proxy is not the current controller this will not
 +         * remove the controller from the session. This prevents a potential issue
 +         * with the controller being set before the previous one has been removed.
 +         *
 +         * @param controller A proxy to the session controller to remove.
 +         */
 +        ["amd"] void removeSessionController(SessionController* controller);
 +    };
 +
 +    /**
 +     * A telephony session is a session that is with a telephone or telephone
 +     * network. It has events associated with it that do not occur with other types
 +     * of sessions.
 +     */
 +    interface TelephonySession extends Session
 +    {
 +        TelephonyEventsSourceSeq getSources();
 +        TelephonyEventsSinkSeq getSinks();
 +    };
 +
 +    unsliceable class TelephonyEvent
 +    {
 +    };
 +
 +    unsliceable class BeginDTMFEvent extends TelephonyEvent
 +    {
 +        byte digit;
 +    };
 +
 +    unsliceable class EndDTMFEvent extends TelephonyEvent
 +    {
 +        byte digit;
 +        int duration;
 +    };
 +
 +    interface TelephonyEventSink;
 +    sequence<TelephonyEventSink> TelephonyEventSinkSeq;
 +
 +    /**
 +     * A source for telephony events
 +     */
 +    interface TelephonyEventSource
 +    {
 +        /**
 +         * Add a new sink to send telephony events to
 +         */
 +        idempotent void addSink(TelephonyEventSink* sink);
 +        /**
 +         * Get a list of the sinks to which this source sends events
 +         */
 +        idempotent TelephonyEventSinkSeq getSinks();
 +    };
 +
 +    sequence<TelephonyEventSource> TelephonyEventSourceSeq;
 +
 +    /**
 +     * A place to send telephony events
 +     */
 +    interface TelephonyEventSink
 +    {
 +        /**
 +         * Send a telephony event to this sink
 +         */
 +        void write(TelephonyEvent event);
 +        /**
 +         * Set the source for this sink
 +         */
 +        idempotent void setSource(TelephonyEventSource* source);
 +        /**
 +         * Get the source for this sink
 +         */
 +        idempotent TelephonyEventSource* getSource();
 +    };
 +
 +    /**
 +     * A telephony session is a session that is with a telephone or telephone
 +     * network. It has events associated with it that do not occur with other types
 +     * of sessions.
 +     */
 +    interface TelephonySession extends Session
 +    {
 +        TelephonyEventSourceSeq getSources();
 +        TelephonyEventSinkSeq getSinks();
 +    };
 +
 +    unsliceable class TelephonyEvent
 +    {
 +    };
 +
 +    unsliceable class BeginDTMFEvent extends TelephonyEvent
 +    {
 +        byte digit;
 +    };
 +
 +    unsliceable class EndDTMFEvent extends TelephonyEvent
 +    {
 +        byte digit;
 +        int duration;
 +    };
 +
 +    interface TelephonyEventsSource
 +    {
 +        idempotent void addSink(TelephonyEventsSink* sink);
 +        idempotent TelephonyEventSink* getSinks();
 +    };
 +
 +    interface TelephonyEventsSink
 +    {
 +        void write(TelephonyEvent event);
 +        idempotent void setSource(TelephonyEventsSource* source);
 +        idempotent TelephonyEventsSource* getSource();
 +    };
 +
 +    /**
 +     * A telephony session is a session that is with a telephone or telephone
 +     * network. It has events associated with it that do not occur with other types
++     * of sessions.
++     */
++    interface TelephonySession extends Session
++    {
++        /**
++         * Get a sequence of the telephony event sources for this session
++         */
++        ["amd"] TelephonyEventSourceSeq getSources();
++        /**
++         * Get a sequence of the telephony event sinks for this session
++         */
++        ["amd"] TelephonyEventSinkSeq getSinks();
+     };
+ 
+     unsliceable class TelephonyEvent
+     {
+     };
+ 
+     unsliceable class BeginDTMFEvent extends TelephonyEvent
+     {
+         byte digit;
+     };
+ 
+     unsliceable class EndDTMFEvent extends TelephonyEvent
+     {
+         byte digit;
+         int duration;
+     };
+ 
+     interface TelephonyEventSink;
+     sequence<TelephonyEventSink> TelephonyEventSinkSeq;
+ 
+     /**
+      * A source for telephony events
+      */
+     interface TelephonyEventSource
+     {
+         /**
+          * Add a new sink to send telephony events to
+          */
+         idempotent void addSink(TelephonyEventSink* sink);
+         /**
+          * Get a list of the sinks to which this source sends events
+          */
+         idempotent TelephonyEventSinkSeq getSinks();
+     };
+ 
+     sequence<TelephonyEventSource> TelephonyEventSourceSeq;
+ 
+     /**
+      * A place to send telephony events
+      */
+     interface TelephonyEventSink
+     {
+         /**
+          * Send a telephony event to this sink
+          */
+         void write(TelephonyEvent event);
+         /**
+          * Set the source for this sink
+          */
+         idempotent void setSource(TelephonyEventSource* source);
+         /**
+          * Get the source for this sink
+          */
+         idempotent TelephonyEventSource* getSource();
+     };
+ 
+     /**
+      * A telephony session is a session that is with a telephone or telephone
+      * network. It has events associated with it that do not occur with other types
+      * of sessions.
+      */
+     interface TelephonySession extends Session
+     {
+         TelephonyEventSourceSeq getSources();
+         TelephonyEventSinkSeq getSinks();
+     };
+ 
+     /**
+      * A telephony session is a session that is with a telephone or telephone
+      * network. It has events associated with it that do not occur with other types
       * of sessions.
       */
      interface TelephonySession extends Session

commit 4e86b2abd950c20d045571d800e3e339f27f7195
Author: Mark Michelson <mmichelson at digium.com>
Date:   Wed Jul 20 14:18:25 2011 -0500

    Add documentation and remove an erroneous 'idempotent' directive.

diff --git a/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice b/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice
index bed4608..11acb78 100644
--- a/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice
@@ -28,14 +28,33 @@ module V1
     {
     };
 
+    /**
+     * Indicates the beginning of a DTMF press.
+     */
     unsliceable class BeginDTMFEvent extends TelephonyEvent
     {
-        byte digit;
+        /**
+         * The ASCII value of the DTMF that is being pressed.
+         */
+        byte signal;
     };
 
+    /**
+     * Indicates the end of a DTMF press.
+     *
+     * With certain methods of conveying DTMF, such as SIP INFO,
+     * There will be an EndDTMFEvent with no accompanying
+     * BeginDTMFEvent.
+     */
     unsliceable class EndDTMFEvent extends TelephonyEvent
     {
-        byte digit;
+        /**
+         * The ASCII value of the DTMF that was pressed.
+         */
+        byte signal;
+        /**
+         * The duration of the key press in milliseconds.
+         */
         int duration;
     };
 
@@ -54,7 +73,7 @@ module V1
         /**
          * Add a new sink to send telephony events to
          */
-        ["amd"] idempotent void addSink(TelephonyEventSink* sink);
+        ["amd"] void addSink(TelephonyEventSink* sink);
         /**
          * Get a list of the sinks to which this source sends events
          */

commit 17e108dddff06d03a063458509fffaaed5dac2c1
Author: Mark Michelson <mmichelson at digium.com>
Date:   Wed Jul 20 14:12:41 2011 -0500

    Use AMD where applicable

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index fe327de..7fbcd4e 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -671,8 +671,14 @@ module V1
      */
     interface TelephonySession extends Session
     {
-        TelephonyEventSourceSeq getSources();
-        TelephonyEventSinkSeq getSinks();
+        /**
+         * Get a sequence of the telephony event sources for this session
+         */
+        ["amd"] TelephonyEventSourceSeq getSources();
+        /**
+         * Get a sequence of the telephony event sinks for this session
+         */
+        ["amd"] TelephonyEventSinkSeq getSinks();
     };
 
     /**
diff --git a/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice b/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice
index fef6324..bed4608 100644
--- a/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice
@@ -39,8 +39,12 @@ module V1
         int duration;
     };
 
+    unsliceable class FlashEvent extends TelephonyEvent
+    {
+    };
+
     interface TelephonyEventSink;
-    sequence<TelephonyEventSink> TelephonyEventSinkSeq;
+    sequence<TelephonyEventSink*> TelephonyEventSinkSeq;
 
     /**
      * A source for telephony events
@@ -50,14 +54,18 @@ module V1
         /**
          * Add a new sink to send telephony events to
          */
-        idempotent void addSink(TelephonyEventSink* sink);
+        ["amd"] idempotent void addSink(TelephonyEventSink* sink);
         /**
          * Get a list of the sinks to which this source sends events
          */
-        idempotent TelephonyEventSinkSeq getSinks();
+        ["amd"] idempotent TelephonyEventSinkSeq getSinks();
     };
 
-    sequence<TelephonyEventSource> TelephonyEventSourceSeq;
+    sequence<TelephonyEventSource*> TelephonyEventSourceSeq;
+
+    unsliceable exception TelephonyEventException
+    {
+    };
 
     /**
      * A place to send telephony events
@@ -67,15 +75,15 @@ module V1
         /**
          * Send a telephony event to this sink
          */
-        void write(TelephonyEvent event);
+        ["amd"] void write(TelephonyEvent event) throws TelephonyEventException;
         /**
          * Set the source for this sink
          */
-        idempotent void setSource(TelephonyEventSource* source);
+        ["amd"] idempotent void setSource(TelephonyEventSource* source);
         /**
          * Get the source for this sink
          */
-        idempotent TelephonyEventSource* getSource();
+        ["amd"] idempotent TelephonyEventSource* getSource();
     };
 
 }; /* End of module V1 */

commit 4f8144731b8d8bea448ebf03522988059e99e013
Author: Mark Michelson <mmichelson at digium.com>
Date:   Tue Jul 19 09:26:22 2011 -0500

    Move telephony events to their own file and add media changes.

diff --git a/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice b/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice
index c65f7ce..ff9b4c8 100644
--- a/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice
+++ b/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice
@@ -16,6 +16,7 @@
 
 #include <AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice>
 #include <AsteriskSCF/Media/MediaIf.ice>
+#include <AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice>
 
 module AsteriskSCF
 {
@@ -159,6 +160,29 @@ module V1
       void release();
    };
 
+    class RTPOptions
+    {
+        /**
+         * Tells the RTP session if it should be prepared
+         * to handle telephony events. If this is set true,
+         * then the RTP session should create telephony event
+         * sources and sinks in order to handle such events.
+         */
+        bool handleTelephonyEvents;
+    };
+
+    class RTPAllocationOutputs
+    {
+        /**
+         * Telephony event sources handled by this RTP session
+         */
+        AsteriskSCF::SessionCommunications::V1::TelephonyEventSourceSeq eventSources;
+        /**
+         * Telephony event sinks for this RTP session
+         */
+        AsteriskSCF::SessionCommunications::V1::TelephonyEventSinkSeq eventSinks;
+    };
+
    /**
     * Indicates that the SRTP functionality is not available at the moment. 
     */
@@ -251,7 +275,7 @@ module V1
        * @throws SessionAllocationFailure if the media service is unable to allocate a session
        * to match the provided parameters.
        */
-       RTPSession* allocate(RTPServiceLocatorParams params) throws SessionAllocationFailure;
+       RTPSession* allocate(RTPServiceLocatorParams params, RTPOptions options, out RTPAllocationOutputs outputs) throws SessionAllocationFailure;
    };
 
 }; /*  end module V1 */
diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 46c8ccb..fe327de 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -22,6 +22,7 @@
 #include <AsteriskSCF/System/ExceptionsIf.ice>
 #include <AsteriskSCF/System/Time/TimeIf.ice>
 #include <AsteriskSCF/Media/MediaIf.ice>
+#include <AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice>
 
 module AsteriskSCF
 {
@@ -559,60 +560,6 @@ module V1
         ["amd"] void removeSessionController(SessionController* controller);
     };
 
-    unsliceable class TelephonyEvent
-    {
-    };
-
-    unsliceable class BeginDTMFEvent extends TelephonyEvent
-    {
-        byte digit;
-    };
-
-    unsliceable class EndDTMFEvent extends TelephonyEvent
-    {
-        byte digit;
-        int duration;
-    };
-
-    interface TelephonyEventSink;
-    sequence<TelephonyEventSink> TelephonyEventSinkSeq;
-
-    /**
-     * A source for telephony events
-     */
-    interface TelephonyEventSource
-    {
-        /**
-         * Add a new sink to send telephony events to
-         */
-        idempotent void addSink(TelephonyEventSink* sink);
-        /**
-         * Get a list of the sinks to which this source sends events
-         */
-        idempotent TelephonyEventSinkSeq getSinks();
-    };
-
-    sequence<TelephonyEventSource> TelephonyEventSourceSeq;
-
-    /**
-     * A place to send telephony events
-     */
-    interface TelephonyEventSink
-    {
-        /**
-         * Send a telephony event to this sink
-         */
-        void write(TelephonyEvent event);
-        /**
-         * Set the source for this sink
-         */
-        idempotent void setSource(TelephonyEventSource* source);
-        /**
-         * Get the source for this sink
-         */
-        idempotent TelephonyEventSource* getSource();
-    };
-
     /**
      * A telephony session is a session that is with a telephone or telephone
      * network. It has events associated with it that do not occur with other types
diff --git a/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice b/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice
new file mode 100644
index 0000000..fef6324
--- /dev/null
+++ b/slice/AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice
@@ -0,0 +1,85 @@
+/*
+ * Asterisk SCF -- An open-source communications framework.
+ *
+ * Copyright (C) 2010, Digium, Inc.
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk SCF project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE.txt file
+ * at the top of the source tree.
+ */
+
+#pragma once
+module AsteriskSCF
+{
+
+module SessionCommunications
+{
+
+["suppress"]
+module V1
+{
+    unsliceable class TelephonyEvent
+    {
+    };
+
+    unsliceable class BeginDTMFEvent extends TelephonyEvent
+    {
+        byte digit;
+    };
+
+    unsliceable class EndDTMFEvent extends TelephonyEvent
+    {
+        byte digit;
+        int duration;
+    };
+
+    interface TelephonyEventSink;
+    sequence<TelephonyEventSink> TelephonyEventSinkSeq;
+
+    /**
+     * A source for telephony events
+     */
+    interface TelephonyEventSource
+    {
+        /**
+         * Add a new sink to send telephony events to
+         */
+        idempotent void addSink(TelephonyEventSink* sink);
+        /**
+         * Get a list of the sinks to which this source sends events
+         */
+        idempotent TelephonyEventSinkSeq getSinks();
+    };
+
+    sequence<TelephonyEventSource> TelephonyEventSourceSeq;
+
+    /**
+     * A place to send telephony events
+     */
+    interface TelephonyEventSink
+    {
+        /**
+         * Send a telephony event to this sink
+         */
+        void write(TelephonyEvent event);
+        /**
+         * Set the source for this sink
+         */
+        idempotent void setSource(TelephonyEventSource* source);
+        /**
+         * Get the source for this sink
+         */
+        idempotent TelephonyEventSource* getSource();
+    };
+
+}; /* End of module V1 */
+
+}; /* End of module SessionCommunications */
+
+}; /* End of module AsteriskSCF */

commit e1d951b9e26e74d39343d90bdd0fbfdb24ce1622
Author: Mark Michelson <mmichelson at digium.com>
Date:   Tue Jul 12 16:58:27 2011 -0500

    Address Kevin's comments on CR-ASTSCF-123.
    
    * Remove abandoned DTMF session indications.
    * Change EventsSink and EventsSource to EventSink and EventSource

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 341e788..46c8ccb 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -195,33 +195,6 @@ module V1
     };
 
     /**
-     * About DTMF
-     * DTMF can be transmitted in multiple ways. The most common way
-     * is to detect that DTMF has begun and that it has ended. However,
-     * there are such cases where we get a single notification that
-     * DTMF was received, and how long the DTMF press was. In such a
-     * case we only send an end indication that has the "duration"
-     * specified within.
-     */
-   
-    /**
-     * Command to indicate the beginning of a DTMF digit
-     */
-    unsliceable class BeginDTMF extends TelephonyIndication
-    {
-        byte digit;
-    };
-
-    /**
-     * Command to indicate the end of a DTMF digit
-     */
-    unsliceable class EndDTMF extends TelephonyIndication
-    {
-        byte digit;
-        int duration;
-    };
-
-    /**
      * A sequence of cookies, allowing for a variable number of them
      * to be passed in a single operation or event.
      *
@@ -666,30 +639,30 @@ module V1
         int duration;
     };
 
-    interface TelephonyEventsSink;
-    sequence<TelephonyEventsSink> TelephonyEventsSinkSeq;
+    interface TelephonyEventSink;
+    sequence<TelephonyEventSink> TelephonyEventSinkSeq;
 
     /**
      * A source for telephony events
      */
-    interface TelephonyEventsSource
+    interface TelephonyEventSource
     {
         /**
          * Add a new sink to send telephony events to
          */
-        idempotent void addSink(TelephonyEventsSink* sink);
+        idempotent void addSink(TelephonyEventSink* sink);
         /**
          * Get a list of the sinks to which this source sends events
          */
-        idempotent TelephonyEventsSinkSeq getSinks();
+        idempotent TelephonyEventSinkSeq getSinks();
     };
 
-    sequence<TelephonyEventsSource> TelephonyEventsSourceSeq;
+    sequence<TelephonyEventSource> TelephonyEventSourceSeq;
 
     /**
      * A place to send telephony events
      */
-    interface TelephonyEventsSink
+    interface TelephonyEventSink
     {
         /**
          * Send a telephony event to this sink
@@ -698,11 +671,11 @@ module V1
         /**
          * Set the source for this sink
          */
-        idempotent void setSource(TelephonyEventsSource* source);
+        idempotent void setSource(TelephonyEventSource* source);
         /**
          * Get the source for this sink
          */
-        idempotent TelephonyEventsSource* getSource();
+        idempotent TelephonyEventSource* getSource();
     };
 
     /**
@@ -751,8 +724,8 @@ module V1
      */
     interface TelephonySession extends Session
     {
-        TelephonyEventsSourceSeq getSources();
-        TelephonyEventsSinkSeq getSinks();
+        TelephonyEventSourceSeq getSources();
+        TelephonyEventSinkSeq getSinks();
     };
 
     /**

commit 1e6fbb3b7ecbe6e09c8a036444417ba81bf6e4fc
Author: Mark Michelson <mmichelson at digium.com>
Date:   Mon Jul 11 10:34:18 2011 -0500

    Clean up slice and add some brief docs to methods.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 838374a..341e788 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -222,33 +222,6 @@ module V1
     };
 
     /**
-     * About DTMF
-     * DTMF can be transmitted in multiple ways. The most common way
-     * is to detect that DTMF has begun and that it has ended. However,
-     * there are such cases where we get a single notification that
-     * DTMF was received, and how long the DTMF press was. In such a
-     * case we only send an end indication that has the "duration"
-     * specified within.
-     */
-   
-    /**
-     * Command to indicate the beginning of a DTMF digit
-     */
-    unsliceable class BeginDTMF extends TelephonyIndication
-    {
-        byte digit;
-    };
-
-    /**
-     * Command to indicate the end of a DTMF digit
-     */
-    unsliceable class EndDTMF extends TelephonyIndication
-    {
-        byte digit;
-        int duration;
-    };
-
-    /**
      * A sequence of cookies, allowing for a variable number of them
      * to be passed in a single operation or event.
      *
@@ -693,16 +666,42 @@ module V1
         int duration;
     };
 
+    interface TelephonyEventsSink;
+    sequence<TelephonyEventsSink> TelephonyEventsSinkSeq;
+
+    /**
+     * A source for telephony events
+     */
     interface TelephonyEventsSource
     {
+        /**
+         * Add a new sink to send telephony events to
+         */
         idempotent void addSink(TelephonyEventsSink* sink);
-        idempotent TelephonyEventSink* getSinks();
+        /**
+         * Get a list of the sinks to which this source sends events
+         */
+        idempotent TelephonyEventsSinkSeq getSinks();
     };
 
+    sequence<TelephonyEventsSource> TelephonyEventsSourceSeq;
+
+    /**
+     * A place to send telephony events
+     */
     interface TelephonyEventsSink
     {
+        /**
+         * Send a telephony event to this sink
+         */
         void write(TelephonyEvent event);
+        /**
+         * Set the source for this sink
+         */
         idempotent void setSource(TelephonyEventsSource* source);
+        /**
+         * Get the source for this sink
+         */
         idempotent TelephonyEventsSource* getSource();
     };
 
@@ -752,8 +751,8 @@ module V1
      */
     interface TelephonySession extends Session
     {
-        TelephonyEventSourceSeq getSources();
-        TelephonyEventSinkSeq getSinks();
+        TelephonyEventsSourceSeq getSources();
+        TelephonyEventsSinkSeq getSinks();
     };
 
     /**

commit 1e4a200895905b4daad524073b559e1c6a20c058
Author: Mark Michelson <mmichelson at digium.com>
Date:   Fri Jul 8 09:32:21 2011 -0500

    Change case of DTMF classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index f165a9e..838374a 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -234,7 +234,7 @@ module V1
     /**
      * Command to indicate the beginning of a DTMF digit
      */
-    unsliceable class beginDTMF extends TelephonyIndication
+    unsliceable class BeginDTMF extends TelephonyIndication
     {
         byte digit;
     };
@@ -242,7 +242,7 @@ module V1
     /**
      * Command to indicate the end of a DTMF digit
      */
-    unsliceable class endDTMF extends TelephonyIndication
+    unsliceable class EndDTMF extends TelephonyIndication
     {
         byte digit;
         int duration;

commit 316e80013a1a1af9e010ab176375f2f7da956f0c
Author: Mark Michelson <mmichelson at digium.com>
Date:   Thu Jul 7 09:22:14 2011 -0500

    There's no need for all these DTMF classes.
    
    Basically, you can tell whether DTMF has been detected or whether
    it is being commanded to be indicated without the need for the
    different classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index eaae378..f165a9e 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -230,24 +230,7 @@ module V1
      * case we only send an end indication that has the "duration"
      * specified within.
      */
-    
-    /**
-     * Indication that a DTMF digit has begun
-     */
-    unsliceable class DTMFBegun extends TelephonyIndication
-    {
-        byte digit;
-    };
-
-    /**
-     * Indication that a DTMF digit has ended
-     */
-    unsliceable class DTMFEnded extends TelephonyIndication
-    {
-        byte digit;
-        int duration;
-    };
-
+   
     /**
      * Command to indicate the beginning of a DTMF digit
      */

commit 301511a730689ef97b5a0ad0ac7253764bc0ceb1
Author: Mark Michelson <mmichelson at digium.com>
Date:   Wed Jul 6 16:42:56 2011 -0500

    Add DTMF indication classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 885b83c..eaae378 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -222,6 +222,50 @@ module V1
     };
 
     /**
+     * About DTMF
+     * DTMF can be transmitted in multiple ways. The most common way
+     * is to detect that DTMF has begun and that it has ended. However,
+     * there are such cases where we get a single notification that
+     * DTMF was received, and how long the DTMF press was. In such a
+     * case we only send an end indication that has the "duration"
+     * specified within.
+     */
+    
+    /**
+     * Indication that a DTMF digit has begun
+     */
+    unsliceable class DTMFBegun extends TelephonyIndication
+    {
+        byte digit;
+    };
+
+    /**
+     * Indication that a DTMF digit has ended
+     */
+    unsliceable class DTMFEnded extends TelephonyIndication
+    {
+        byte digit;
+        int duration;
+    };
+
+    /**
+     * Command to indicate the beginning of a DTMF digit
+     */
+    unsliceable class beginDTMF extends TelephonyIndication
+    {
+        byte digit;
+    };
+
+    /**
+     * Command to indicate the end of a DTMF digit
+     */
+    unsliceable class endDTMF extends TelephonyIndication
+    {
+        byte digit;
+        int duration;
+    };
+
+    /**
      * A sequence of cookies, allowing for a variable number of them
      * to be passed in a single operation or event.
      *

commit f521d81df6506d98720689f7f59715e21dbf12c3
Author: Mark Michelson <mmichelson at digium.com>
Date:   Fri Jul 8 15:02:08 2011 -0500

    Initial telephony events/telephony session addition.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 03d5120..885b83c 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -690,6 +690,45 @@ module V1
         TelephonyEventSinkSeq getSinks();
     };
 
+    unsliceable class TelephonyEvent
+    {
+    };
+
+    unsliceable class BeginDTMFEvent extends TelephonyEvent
+    {
+        byte digit;
+    };
+
+    unsliceable class EndDTMFEvent extends TelephonyEvent
+    {
+        byte digit;
+        int duration;
+    };
+
+    interface TelephonyEventsSource
+    {
+        idempotent void addSink(TelephonyEventsSink* sink);
+        idempotent TelephonyEventSink* getSinks();
+    };
+
+    interface TelephonyEventsSink
+    {
+        void write(TelephonyEvent event);
+        idempotent void setSource(TelephonyEventsSource* source);
+        idempotent TelephonyEventsSource* getSource();
+    };
+
+    /**
+     * A telephony session is a session that is with a telephone or telephone
+     * network. It has events associated with it that do not occur with other types
+     * of sessions.
+     */
+    interface TelephonySession extends Session
+    {
+        TelephonyEventSourceSeq getSources();
+        TelephonyEventSinkSeq getSinks();
+    };
+
     /**
      * Exception used to indicate an endpoint is unreachable.
      */

commit 066d644817a1b66fded5c451a01bf8c909d49808
Author: Mark Michelson <mmichelson at digium.com>
Date:   Fri Jul 8 09:32:21 2011 -0500

    Change case of DTMF classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 6b88493..03d5120 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -207,7 +207,7 @@ module V1
     /**
      * Command to indicate the beginning of a DTMF digit
      */
-    unsliceable class beginDTMF extends TelephonyIndication
+    unsliceable class BeginDTMF extends TelephonyIndication
     {
         byte digit;
     };
@@ -215,7 +215,7 @@ module V1
     /**
      * Command to indicate the end of a DTMF digit
      */
-    unsliceable class endDTMF extends TelephonyIndication
+    unsliceable class EndDTMF extends TelephonyIndication
     {
         byte digit;
         int duration;

commit 746b04090e0417866c65a177aa9d557d33f180d2
Author: Mark Michelson <mmichelson at digium.com>
Date:   Thu Jul 7 09:22:14 2011 -0500

    There's no need for all these DTMF classes.
    
    Basically, you can tell whether DTMF has been detected or whether
    it is being commanded to be indicated without the need for the
    different classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index d9402b2..6b88493 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -203,24 +203,7 @@ module V1
      * case we only send an end indication that has the "duration"
      * specified within.
      */
-    
-    /**
-     * Indication that a DTMF digit has begun
-     */
-    unsliceable class DTMFBegun extends TelephonyIndication
-    {
-        byte digit;
-    };
-
-    /**
-     * Indication that a DTMF digit has ended
-     */
-    unsliceable class DTMFEnded extends TelephonyIndication
-    {
-        byte digit;
-        int duration;
-    };
-
+   
     /**
      * Command to indicate the beginning of a DTMF digit
      */

commit 3ba802dfb6aadc72cf220bc94055fba327a35e93
Author: Mark Michelson <mmichelson at digium.com>
Date:   Wed Jul 6 16:42:56 2011 -0500

    Add DTMF indication classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index a07e140..d9402b2 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -195,6 +195,50 @@ module V1
     };
 
     /**
+     * About DTMF
+     * DTMF can be transmitted in multiple ways. The most common way
+     * is to detect that DTMF has begun and that it has ended. However,
+     * there are such cases where we get a single notification that
+     * DTMF was received, and how long the DTMF press was. In such a
+     * case we only send an end indication that has the "duration"
+     * specified within.
+     */
+    
+    /**
+     * Indication that a DTMF digit has begun
+     */
+    unsliceable class DTMFBegun extends TelephonyIndication
+    {
+        byte digit;
+    };
+
+    /**
+     * Indication that a DTMF digit has ended
+     */
+    unsliceable class DTMFEnded extends TelephonyIndication
+    {
+        byte digit;
+        int duration;
+    };
+
+    /**
+     * Command to indicate the beginning of a DTMF digit
+     */
+    unsliceable class beginDTMF extends TelephonyIndication
+    {
+        byte digit;
+    };
+
+    /**
+     * Command to indicate the end of a DTMF digit
+     */
+    unsliceable class endDTMF extends TelephonyIndication
+    {
+        byte digit;
+        int duration;
+    };
+
+    /**
      * A sequence of cookies, allowing for a variable number of them
      * to be passed in a single operation or event.
      *

commit 58527682560c3bb61a507bccff6e6ce8ea0e0b63
Author: Mark Michelson <mmichelson at digium.com>
Date:   Tue Jul 12 16:58:27 2011 -0500

    Address Kevin's comments on CR-ASTSCF-123.
    
    * Remove abandoned DTMF session indications.
    * Change EventsSink and EventsSource to EventSink and EventSource

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 98b7741..a07e140 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -195,33 +195,6 @@ module V1
     };
 
     /**
-     * About DTMF
-     * DTMF can be transmitted in multiple ways. The most common way
-     * is to detect that DTMF has begun and that it has ended. However,
-     * there are such cases where we get a single notification that
-     * DTMF was received, and how long the DTMF press was. In such a
-     * case we only send an end indication that has the "duration"
-     * specified within.
-     */
-   
-    /**
-     * Command to indicate the beginning of a DTMF digit
-     */
-    unsliceable class BeginDTMF extends TelephonyIndication
-    {
-        byte digit;
-    };
-
-    /**
-     * Command to indicate the end of a DTMF digit
-     */
-    unsliceable class EndDTMF extends TelephonyIndication
-    {
-        byte digit;
-        int duration;
-    };
-
-    /**
      * A sequence of cookies, allowing for a variable number of them
      * to be passed in a single operation or event.
      *
@@ -601,30 +574,30 @@ module V1
         int duration;
     };
 
-    interface TelephonyEventsSink;
-    sequence<TelephonyEventsSink> TelephonyEventsSinkSeq;
+    interface TelephonyEventSink;
+    sequence<TelephonyEventSink> TelephonyEventSinkSeq;
 
     /**
      * A source for telephony events
      */
-    interface TelephonyEventsSource
+    interface TelephonyEventSource
     {
         /**
          * Add a new sink to send telephony events to
          */
-        idempotent void addSink(TelephonyEventsSink* sink);
+        idempotent void addSink(TelephonyEventSink* sink);
         /**
          * Get a list of the sinks to which this source sends events
          */
-        idempotent TelephonyEventsSinkSeq getSinks();
+        idempotent TelephonyEventSinkSeq getSinks();
     };
 
-    sequence<TelephonyEventsSource> TelephonyEventsSourceSeq;
+    sequence<TelephonyEventSource> TelephonyEventSourceSeq;
 
     /**
      * A place to send telephony events
      */
-    interface TelephonyEventsSink
+    interface TelephonyEventSink
     {
         /**
          * Send a telephony event to this sink
@@ -633,11 +606,11 @@ module V1
         /**
          * Set the source for this sink
          */
-        idempotent void setSource(TelephonyEventsSource* source);
+        idempotent void setSource(TelephonyEventSource* source);
         /**
          * Get the source for this sink
          */
-        idempotent TelephonyEventsSource* getSource();
+        idempotent TelephonyEventSource* getSource();
     };
 
     /**
@@ -686,8 +659,8 @@ module V1
      */
     interface TelephonySession extends Session
     {
-        TelephonyEventsSourceSeq getSources();
-        TelephonyEventsSinkSeq getSinks();
+        TelephonyEventSourceSeq getSources();
+        TelephonyEventSinkSeq getSinks();
     };
 
     /**

commit 3d9627788925c83576d30c515611d52b3b89cf90
Author: Mark Michelson <mmichelson at digium.com>
Date:   Mon Jul 11 15:54:48 2011 -0500

    Fix error in slice file.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 222363f..98b7741 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -647,8 +647,8 @@ module V1
      */
     interface TelephonySession extends Session
     {
-        TelephonyEventSourceSeq getSources();
-        TelephonyEventSinkSeq getSinks();
+        TelephonyEventsSourceSeq getSources();
+        TelephonyEventsSinkSeq getSinks();
     };
 
     unsliceable class TelephonyEvent

commit a1c7095470e0837cddf06392600f4ded75621c7d
Author: Mark Michelson <mmichelson at digium.com>
Date:   Mon Jul 11 10:34:18 2011 -0500

    Clean up slice and add some brief docs to methods.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index e41c9ca..222363f 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -222,33 +222,6 @@ module V1
     };
 
     /**
-     * About DTMF
-     * DTMF can be transmitted in multiple ways. The most common way
-     * is to detect that DTMF has begun and that it has ended. However,
-     * there are such cases where we get a single notification that
-     * DTMF was received, and how long the DTMF press was. In such a
-     * case we only send an end indication that has the "duration"
-     * specified within.
-     */
-   
-    /**
-     * Command to indicate the beginning of a DTMF digit
-     */
-    unsliceable class BeginDTMF extends TelephonyIndication
-    {
-        byte digit;
-    };
-
-    /**
-     * Command to indicate the end of a DTMF digit
-     */
-    unsliceable class EndDTMF extends TelephonyIndication
-    {
-        byte digit;
-        int duration;
-    };
-
-    /**
      * A sequence of cookies, allowing for a variable number of them
      * to be passed in a single operation or event.
      *
@@ -628,16 +601,42 @@ module V1
         int duration;
     };
 
+    interface TelephonyEventsSink;
+    sequence<TelephonyEventsSink> TelephonyEventsSinkSeq;
+
+    /**
+     * A source for telephony events
+     */
     interface TelephonyEventsSource
     {
+        /**
+         * Add a new sink to send telephony events to
+         */
         idempotent void addSink(TelephonyEventsSink* sink);
-        idempotent TelephonyEventSink* getSinks();
+        /**
+         * Get a list of the sinks to which this source sends events
+         */
+        idempotent TelephonyEventsSinkSeq getSinks();
     };
 
+    sequence<TelephonyEventsSource> TelephonyEventsSourceSeq;
+
+    /**
+     * A place to send telephony events
+     */
     interface TelephonyEventsSink
     {
+        /**
+         * Send a telephony event to this sink
+         */
         void write(TelephonyEvent event);
+        /**
+         * Set the source for this sink
+         */
         idempotent void setSource(TelephonyEventsSource* source);
+        /**
+         * Get the source for this sink
+         */
         idempotent TelephonyEventsSource* getSource();
     };
 
@@ -687,8 +686,8 @@ module V1
      */
     interface TelephonySession extends Session
     {
-        TelephonyEventSourceSeq getSources();
-        TelephonyEventSinkSeq getSinks();
+        TelephonyEventsSourceSeq getSources();
+        TelephonyEventsSinkSeq getSinks();
     };
 
     /**

commit 3210fdee32fe530ab3c510722e1f074673e54d98
Author: Mark Michelson <mmichelson at digium.com>
Date:   Fri Jul 8 15:02:08 2011 -0500

    Initial telephony events/telephony session addition.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index f2fb5db..e41c9ca 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -652,6 +652,45 @@ module V1
         TelephonyEventSinkSeq getSinks();
     };
 
+    unsliceable class TelephonyEvent
+    {
+    };
+
+    unsliceable class BeginDTMFEvent extends TelephonyEvent
+    {
+        byte digit;
+    };
+
+    unsliceable class EndDTMFEvent extends TelephonyEvent
+    {
+        byte digit;
+        int duration;
+    };
+
+    interface TelephonyEventsSource
+    {
+        idempotent void addSink(TelephonyEventsSink* sink);
+        idempotent TelephonyEventSink* getSinks();
+    };
+
+    interface TelephonyEventsSink
+    {
+        void write(TelephonyEvent event);
+        idempotent void setSource(TelephonyEventsSource* source);
+        idempotent TelephonyEventsSource* getSource();
+    };
+
+    /**
+     * A telephony session is a session that is with a telephone or telephone
+     * network. It has events associated with it that do not occur with other types
+     * of sessions.
+     */
+    interface TelephonySession extends Session
+    {
+        TelephonyEventSourceSeq getSources();
+        TelephonyEventSinkSeq getSinks();
+    };
+
     /**
      * Exception used to indicate an endpoint is unreachable.
      */

commit 87084086ac652c2d78a08e4303b040c617a460d2
Author: Mark Michelson <mmichelson at digium.com>
Date:   Fri Jul 8 09:32:21 2011 -0500

    Change case of DTMF classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index b8fe4e3..f2fb5db 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -234,7 +234,7 @@ module V1
     /**
      * Command to indicate the beginning of a DTMF digit
      */
-    unsliceable class beginDTMF extends TelephonyIndication
+    unsliceable class BeginDTMF extends TelephonyIndication
     {
         byte digit;
     };
@@ -242,7 +242,7 @@ module V1
     /**
      * Command to indicate the end of a DTMF digit
      */
-    unsliceable class endDTMF extends TelephonyIndication
+    unsliceable class EndDTMF extends TelephonyIndication
     {
         byte digit;
         int duration;

commit ad5c63f72a7592846b2ea4e6eafeacb3a079a940
Author: Mark Michelson <mmichelson at digium.com>
Date:   Thu Jul 7 09:22:14 2011 -0500

    There's no need for all these DTMF classes.
    
    Basically, you can tell whether DTMF has been detected or whether
    it is being commanded to be indicated without the need for the
    different classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index cf01520..b8fe4e3 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -230,24 +230,7 @@ module V1
      * case we only send an end indication that has the "duration"
      * specified within.
      */
-    
-    /**
-     * Indication that a DTMF digit has begun
-     */
-    unsliceable class DTMFBegun extends TelephonyIndication
-    {
-        byte digit;
-    };
-
-    /**
-     * Indication that a DTMF digit has ended
-     */
-    unsliceable class DTMFEnded extends TelephonyIndication
-    {
-        byte digit;
-        int duration;
-    };
-
+   
     /**
      * Command to indicate the beginning of a DTMF digit
      */

commit c5b274b221ab70df08aecfd7cf0414e9e1cb1375
Author: Mark Michelson <mmichelson at digium.com>
Date:   Wed Jul 6 16:42:56 2011 -0500

    Add DTMF indication classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 4e5848f..cf01520 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -222,6 +222,50 @@ module V1
     };
 
     /**
+     * About DTMF
+     * DTMF can be transmitted in multiple ways. The most common way
+     * is to detect that DTMF has begun and that it has ended. However,
+     * there are such cases where we get a single notification that
+     * DTMF was received, and how long the DTMF press was. In such a
+     * case we only send an end indication that has the "duration"
+     * specified within.
+     */
+    
+    /**
+     * Indication that a DTMF digit has begun
+     */
+    unsliceable class DTMFBegun extends TelephonyIndication
+    {
+        byte digit;
+    };
+
+    /**
+     * Indication that a DTMF digit has ended
+     */
+    unsliceable class DTMFEnded extends TelephonyIndication
+    {
+        byte digit;
+        int duration;
+    };
+
+    /**
+     * Command to indicate the beginning of a DTMF digit
+     */
+    unsliceable class beginDTMF extends TelephonyIndication
+    {
+        byte digit;
+    };
+
+    /**
+     * Command to indicate the end of a DTMF digit
+     */
+    unsliceable class endDTMF extends TelephonyIndication
+    {
+        byte digit;
+        int duration;
+    };
+
+    /**
      * A sequence of cookies, allowing for a variable number of them
      * to be passed in a single operation or event.
      *

commit a9820ac200df8d31eea60dd4fea5f27d5987f85c
Author: Mark Michelson <mmichelson at digium.com>
Date:   Fri Jul 8 15:02:08 2011 -0500

    Initial telephony events/telephony session addition.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 3ea4de9..4e5848f 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -586,6 +586,45 @@ module V1
         ["amd"] void removeSessionController(SessionController* controller);
     };
 
+    unsliceable class TelephonyEvent
+    {
+    };
+
+    unsliceable class BeginDTMFEvent extends TelephonyEvent
+    {
+        byte digit;
+    };
+
+    unsliceable class EndDTMFEvent extends TelephonyEvent
+    {
+        byte digit;
+        int duration;
+    };
+
+    interface TelephonyEventsSource
+    {
+        idempotent void addSink(TelephonyEventsSink* sink);
+        idempotent TelephonyEventSink* getSinks();
+    };
+
+    interface TelephonyEventsSink
+    {
+        void write(TelephonyEvent event);
+        idempotent void setSource(TelephonyEventsSource* source);
+        idempotent TelephonyEventsSource* getSource();
+    };
+
+    /**
+     * A telephony session is a session that is with a telephone or telephone
+     * network. It has events associated with it that do not occur with other types
+     * of sessions.
+     */
+    interface TelephonySession extends Session
+    {
+        TelephonyEventSourceSeq getSources();
+        TelephonyEventSinkSeq getSinks();
+    };
+
     /**
      * Exception used to indicate an endpoint is unreachable.
      */

commit d735f01dfafdee853aceb6ffb7e9d41b4047d95a
Author: Mark Michelson <mmichelson at digium.com>
Date:   Fri Jul 8 09:32:21 2011 -0500

    Change case of DTMF classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index ce9d94c..3ea4de9 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -207,7 +207,7 @@ module V1
     /**
      * Command to indicate the beginning of a DTMF digit
      */
-    unsliceable class beginDTMF extends TelephonyIndication
+    unsliceable class BeginDTMF extends TelephonyIndication
     {
         byte digit;
     };
@@ -215,7 +215,7 @@ module V1
     /**
      * Command to indicate the end of a DTMF digit
      */
-    unsliceable class endDTMF extends TelephonyIndication
+    unsliceable class EndDTMF extends TelephonyIndication
     {
         byte digit;
         int duration;

commit 6e2fa7c0124c66217fd422dc71177fcb8d7c3fff
Author: Mark Michelson <mmichelson at digium.com>
Date:   Thu Jul 7 09:22:14 2011 -0500

    There's no need for all these DTMF classes.
    
    Basically, you can tell whether DTMF has been detected or whether
    it is being commanded to be indicated without the need for the
    different classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 0c8d342..ce9d94c 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -203,24 +203,7 @@ module V1
      * case we only send an end indication that has the "duration"
      * specified within.
      */
-    
-    /**
-     * Indication that a DTMF digit has begun
-     */
-    unsliceable class DTMFBegun extends TelephonyIndication
-    {
-        byte digit;
-    };
-
-    /**
-     * Indication that a DTMF digit has ended
-     */
-    unsliceable class DTMFEnded extends TelephonyIndication
-    {
-        byte digit;
-        int duration;
-    };
-
+   
     /**
      * Command to indicate the beginning of a DTMF digit
      */

commit 385ee4248b0b73bf5f78bdc66f63a29e06d3d8a5
Author: Mark Michelson <mmichelson at digium.com>
Date:   Wed Jul 6 16:42:56 2011 -0500

    Add DTMF indication classes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index f2eb72a..0c8d342 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -195,6 +195,50 @@ module V1
     };
 
     /**
+     * About DTMF
+     * DTMF can be transmitted in multiple ways. The most common way
+     * is to detect that DTMF has begun and that it has ended. However,
+     * there are such cases where we get a single notification that
+     * DTMF was received, and how long the DTMF press was. In such a
+     * case we only send an end indication that has the "duration"
+     * specified within.
+     */
+    
+    /**
+     * Indication that a DTMF digit has begun
+     */
+    unsliceable class DTMFBegun extends TelephonyIndication
+    {
+        byte digit;
+    };
+
+    /**
+     * Indication that a DTMF digit has ended
+     */
+    unsliceable class DTMFEnded extends TelephonyIndication
+    {
+        byte digit;
+        int duration;
+    };
+
+    /**
+     * Command to indicate the beginning of a DTMF digit
+     */
+    unsliceable class beginDTMF extends TelephonyIndication
+    {
+        byte digit;
+    };
+
+    /**
+     * Command to indicate the end of a DTMF digit
+     */
+    unsliceable class endDTMF extends TelephonyIndication
+    {
+        byte digit;
+        int duration;
+    };
+
+    /**
      * A sequence of cookies, allowing for a variable number of them
      * to be passed in a single operation or event.
      *

commit 8774a9fee9cebfb35ae9cae57c578ac2047f75af
Author: Joshua Colp <jcolp at digium.com>
Date:   Mon Aug 1 19:37:33 2011 -0300

    Add an interface for establishing direct media connections external to ourselves.

diff --git a/slice/AsteriskSCF/Media/MediaIf.ice b/slice/AsteriskSCF/Media/MediaIf.ice
index b02a21b..f9bb522 100644
--- a/slice/AsteriskSCF/Media/MediaIf.ice
+++ b/slice/AsteriskSCF/Media/MediaIf.ice
@@ -88,6 +88,46 @@ module V1
     sequence<Frame> FrameSeq;
 
     /**
+     * Facet name for the direct media connection interface on a session.
+     */
+    const string directMediaConnectionFacet = "directmediaconnection";
+
+    /**
+     * Dictionary for establishing direct media connections. Key is the stream that is to
+     * be directly connected and sink is the sink to directly connect it to.
+     */
+    dictionary<string, StreamSink*> DirectMediaConnectionDict;
+
+    /**
+     * Interface used to establish direct media connections external to Asterisk SCF.
+     */
+    interface DirectMediaConnection
+    {
+        /**
+         * Method used to determine what streams can be directly connected.
+         *
+         * @param connections The direct connections that are to be established.
+         *
+         * @return StringSeq A sequence of streams that can be directly connected.
+         */
+        ["amd"] idempotent Ice::StringSeq checkDirectConnections(DirectMediaConnectionDict connections);
+
+        /**
+         * Method used to establish direct media connections external to Asterisk SCF.
+         *
+         * @param connections The direct connections that are to be established.
+         */
+        ["amd"] void connectStreams(DirectMediaConnectionDict connections);
+
+        /**
+         * Method used to tear down direct media connections.
+         *
+         * @param streams A sequence of streams that should no longer be directly connected.
+         */
+        ["amd"] void disconnectStreams(Ice::StringSeq streams);
+    };
+
+    /**
      * States that a stream can be in.
      */
     enum StreamState

commit 1b9a00c4ab6cd1deba0f1b5a7065c65fb0e77c7b
Merge: 34d7d68 9172702
Author: Joshua Colp <jcolp at digium.com>
... 3054 lines suppressed ...


-- 
asterisk-scf/integration/slice.git



More information about the asterisk-scf-commits mailing list