[asterisk-scf-commits] asterisk-scf/release/slice.git branch "master" updated.

Commits to the Asterisk SCF project code repositories asterisk-scf-commits at lists.digium.com
Mon Aug 1 13:57:54 CDT 2011


branch "master" has been updated
       via  1b9a00c4ab6cd1deba0f1b5a7065c65fb0e77c7b (commit)
       via  9172702f44da2ad07a57f5f13a9077e5455e84d8 (commit)
       via  859c5a97058b8d0f724cc4ceabf0ce6e9cbffa14 (commit)
       via  2697abafb9071200a2d3074e0533db1c7df9925d (commit)
       via  57a4c6202d356e944d6ed630fb4da5e9ef6e0ad2 (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)
      from  34d7d68a7933919c12f0837f24a84671ce831bd5 (commit)

Summary of changes:
 .../SessionCommunicationsIf.ice                    |   90 ++++++++++++++++++++
 1 files changed, 90 insertions(+), 0 deletions(-)


- Log -----------------------------------------------------------------
commit 1b9a00c4ab6cd1deba0f1b5a7065c65fb0e77c7b
Merge: 34d7d68 9172702
Author: Joshua Colp <jcolp at digium.com>
Date:   Mon Aug 1 15:04:38 2011 -0300

    Merge branch 'sessioncontroller'


commit 9172702f44da2ad07a57f5f13a9077e5455e84d8
Merge: 859c5a9 084e46f
Author: Joshua Colp <jcolp at digium.com>
Date:   Sat Jul 23 18:47:41 2011 -0300

    Merge branch 'master' into sessioncontroller
    
    Conflicts:
    	slice/AsteriskSCF/Media/MediaIf.ice


commit 859c5a97058b8d0f724cc4ceabf0ce6e9cbffa14
Author: Joshua Colp <jcolp at digium.com>
Date:   Sat Jul 23 18:46:43 2011 -0300

    Clarify some documentation.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index f45df3e..b8a0985 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -347,7 +347,7 @@ module V1
          * @param streams A dictionary of streams with state and requested formats.
          *
          * @return StreamInformationDict A dictionary of streams actually added with state
-         *       and formats.
+         *       and formats. The identifier for each stream must be that of the requested stream.
          */
         ["amd"] AsteriskSCF::Media::V1::StreamInformationDict addStreams(AsteriskSCF::Media::V1::StreamInformationDict
                                                                          streams);

commit 2697abafb9071200a2d3074e0533db1c7df9925d
Author: Joshua Colp <jcolp at digium.com>
Date:   Fri Jul 22 22:20:45 2011 -0300

    Add an exception which is thrown when setAndGetSessionController is called and a session controller is already set.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 042a555..f45df3e 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -314,6 +314,11 @@ module V1
     exception NotBridged { };
 
     /**
+     * Exception used to indicate that a SessionController is already set on a session.
+     */
+    exception ControllerAlreadySet { };
+
+    /**
      * A SessionController interface which is used to invoke critical operations
      * relating to a session. This is implemented by external components so they can
      * be controlled by a session and is also implemented by a session so it can be
@@ -533,9 +538,12 @@ module V1
          * @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);
+        ["amd"] SessionController *setAndGetSessionController(SessionController* controller) throws
+            ControllerAlreadySet;
 
         /**
          * Method which removes a session controller from a session.

commit 57a4c6202d356e944d6ed630fb4da5e9ef6e0ad2
Author: Joshua Colp <jcolp at digium.com>
Date:   Sun Jul 3 15:22:18 2011 -0300

    AMDify the SessionController.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index b2ad334..042a555 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -334,7 +334,7 @@ module V1
          *
          * @param streams A dictionary of streams and their new state.
          */
-        void changeStreamStates(AsteriskSCF::Media::V1::StreamStateDict streams);
+        ["amd"] void changeStreamStates(AsteriskSCF::Media::V1::StreamStateDict streams);
 
         /**
          * Method called to add streams.
@@ -344,15 +344,15 @@ module V1
          * @return StreamInformationDict A dictionary of streams actually added with state
          *       and formats.
          */
-        AsteriskSCF::Media::V1::StreamInformationDict addStreams(AsteriskSCF::Media::V1::StreamInformationDict
-                                                                 streams);
+        ["amd"] AsteriskSCF::Media::V1::StreamInformationDict addStreams(AsteriskSCF::Media::V1::StreamInformationDict
+                                                                         streams);
 
         /**
          * Method called to remove streams.
          *
          * @param streams A dictionary of streams to remove.
          */
-        void removeStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
+        ["amd"] void removeStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
     };
 
     /**

commit 9b253f6413361a6f9856e37196cf1159a4ba54ff
Author: Joshua Colp <jcolp at digium.com>
Date:   Tue Jun 28 19:11:06 2011 -0300

    Make the SessionController operations use AMD so they fit in with the SIP architecture.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index e2f4c49..b2ad334 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -535,7 +535,7 @@ module V1
          *
          * @see SessionController
          */
-        SessionController *setAndGetSessionController(SessionController* controller);
+        ["amd"] SessionController *setAndGetSessionController(SessionController* controller);
 
         /**
          * Method which removes a session controller from a session.
@@ -546,7 +546,7 @@ module V1
          *
          * @param controller A proxy to the session controller to remove.
          */
-        void removeSessionController(SessionController* controller);
+        ["amd"] void removeSessionController(SessionController* controller);
     };
 
     /**

commit eab1888ebc6c01463d045ec31125be608e1dd8dd
Author: Joshua Colp <jcolp at digium.com>
Date:   Mon Jun 27 21:03:34 2011 -0300

    More documentation changes.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index fc1b6e2..e2f4c49 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -528,7 +528,7 @@ module V1
          * 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.
+         * @param controller A proxy to the SessionController object implemented by the caller.
          *
          * @return SessionController* A proxy to the session controller implemented by
          *       the session.

commit feef14224dc27656a857e94d8d12da3950d9e4b2
Author: Joshua Colp <jcolp at digium.com>
Date:   Mon Jun 27 20:54:50 2011 -0300

    Adjust comment.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 994aec3..fc1b6e2 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -540,7 +540,7 @@ module V1
         /**
          * Method which removes a session controller from a session.
          *
-         * If the passed in proxy is not the current controller this should not
+         * 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.
          *

commit 9edb08a626fbb57b8584a1b7d438e5d4ef128e71
Author: Joshua Colp <jcolp at digium.com>
Date:   Mon Jun 27 20:54:08 2011 -0300

    Go away passiveness.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 0e12d4e..994aec3 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -330,14 +330,14 @@ module V1
     interface SessionController
     {
         /**
-         * Method called when stream states change.
+         * Method called to change the state of streams.
          *
          * @param streams A dictionary of streams and their new state.
          */
         void changeStreamStates(AsteriskSCF::Media::V1::StreamStateDict streams);
 
         /**
-         * Method called when streams are added to a session.
+         * Method called to add streams.
          *
          * @param streams A dictionary of streams with state and requested formats.
          *
@@ -348,9 +348,9 @@ module V1
                                                                  streams);
 
         /**
-         * Method called when streams are removed from a session.
+         * Method called to remove streams.
          *
-         * @param streams A dictionary of streams removed.
+         * @param streams A dictionary of streams to remove.
          */
         void removeStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
     };

commit a56480967f353ad72ac0750646e4e3a4486ce691
Merge: a47ca50 687d842
Author: Joshua Colp <jcolp at digium.com>
Date:   Mon Jun 27 20:51:11 2011 -0300

    Merge branch 'media' into sessioncontroller
    
    Conflicts:
    	slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice


commit a47ca502ce1e6dca6833bb2914fa29e0afa77384
Merge: f7676e9 c1445ed
Author: Joshua Colp <jcolp at digium.com>
Date:   Mon Jun 27 20:50:43 2011 -0300

    Merge branch 'master' into sessioncontroller


commit 687d842f88cb5302f05190d5fcb16d84b97e020b
Author: Joshua Colp <jcolp at digium.com>
Date:   Sun Jun 26 16:34:44 2011 -0300

    Document how to have a user of a descriptor assign a dynamic payload themselves.

diff --git a/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice b/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
index 896ff7c..6b166fb 100644
--- a/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
+++ b/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
@@ -57,6 +57,9 @@ module V1
     {
         /**
          * Numerical payload value given in the SDP.
+         *
+         * If this is set to -1 the user of this descriptor should assign a dynamic payload
+         * themselves.
          */
         int payload;
 

commit d431a9f19268bdf772acc6960c3acc4ed67697b7
Merge: 1b09086 c1445ed
Author: Joshua Colp <jcolp at digium.com>
Date:   Sat Jun 25 16:34:56 2011 -0300

    Merge branch 'master' into media


commit 1b09086bfce57fab13b27c3018791a56311f8943
Author: Joshua Colp <jcolp at digium.com>
Date:   Sat Jun 25 15:38:21 2011 -0300

    Extend getNamedFormat to include some format details.

diff --git a/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice b/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
index 0750835..896ff7c 100644
--- a/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
+++ b/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
@@ -91,9 +91,16 @@ module V1
          *
          * @param name Name of the media format, may contain additional details according to the descriptor service.
          *
+         * @param sampleRate The sample rate for the frames.
+         *
+         * @param frameSize The amount of audio contained within the frames.
+         *
+         * @param formatSpecific Any format specific information that is not understood.
+         *
          * @return Format A concrete class containing media format details for the given format.
          */
-        idempotent AsteriskSCF::Media::V1::Format getNamedFormat(string name);
+        idempotent AsteriskSCF::Media::V1::Format getNamedFormat(string name, int sampleRate, int frameSize,
+                                                                 Ice::StringSeq formatSpecific);
 
         /**
          * Method which retrieves a media format concrete class given an SDP descriptor concrete class.

commit 7eb5ee6acbcc2abec8590f15efde23cc62f097c6
Author: Joshua Colp <jcolp at digium.com>
Date:   Sat Jun 25 15:32:07 2011 -0300

    Remove some session changes that do not belong any longer.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 507ce1e..5fdec3e 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -141,47 +141,6 @@ module V1
     };
 
     /**
-     * Stream specific indication class. Useful if a consumer only cares
-     * about stream specific indications.
-     */
-    unsliceable class StreamIndication extends Indication
-    {
-    };
-
-    /**
-     * Indication that a session has had streams added to it.
-     */
-    unsliceable class StreamsAddedIndication extends StreamIndication
-    {
-        /**
-         * Streams that have been added and their information.
-         */
-        AsteriskSCF::Media::V1::StreamInformationDict streams;
-    };
-
-    /**
-     * Indication that a session has had stream information updated on it.
-     */
-    unsliceable class StreamsUpdatedIndication extends StreamIndication
-    {
-        /**
-         * Streams that have been updated and their information.
-         */
-        AsteriskSCF::Media::V1::StreamInformationDict streams;
-    };
-
-    /**
-     * Indication that a session has had streams removed from it.
-     */
-    unsliceable class StreamsRemovedIndication extends StreamIndication
-    {
-        /**
-         * Streams that have been removed and their information.
-         */
-        AsteriskSCF::Media::V1::StreamInformationDict streams;
-    };
-
-    /**
      * Telephony specific indication class. Useful if a consumer only cares
      * about telephony specific indications.
      */
@@ -448,34 +407,6 @@ module V1
         ["amd"] SessionInfo getInfo();
 
         /**
-         * Method which retrieves streams on the session.
-         *
-         * @return A StreamInformationDict containing streams and information about them.
-         */
-        ["amd"] AsteriskSCF::Media::V1::StreamInformationDict getStreams();
-
-        /**
-         * Method which changes the state of streams.
-         *
-         * @param streams A dictionary of streams and their new state.
-         */
-        ["amd"] void changeStreamStates(AsteriskSCF::Media::V1::StreamStateDict streams);
-
-        /**
-         * Method which requests that streams be added to the session.
-         *
-         * @param streams A dictionary of streams and the requested formats.
-         */
-        void addStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
-
-        /**
-         * Method which requests that streams be removed from the session.
-         *
-         * @param streams A dictionary of streams to remove.
-         */
-        void removeStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
-
-        /**
          * Retrieve a media session instance, if available, for the current session.
          * A media session object may not be available at the time this is called.
          * For example, in SIP before media details are known.
@@ -703,14 +634,10 @@ module V1
          *    newly created session. May be a nil reference if an initial listener is not
          *    required.
          *
-         * @param topology A dictionary of streams and the formats that should be carried
-         *    on them.
-         *
          * @return A newly created session object for the destination.
          *
          */
-        Session* createSession(string destination, SessionListener* callback,
-                               AsteriskSCF::Media::V1::StreamInformationDict topology);
+        Session* createSession(string destination, SessionListener* callback);
 
         /**
          * Returns the active sessions for this session endpoint.

commit f7676e99cd267657e65a233b0b07b0b225e3b8ba
Author: Joshua Colp <jcolp at digium.com>
Date:   Fri Jun 24 12:25:18 2011 -0300

    Renaming and further documentation.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 8e1dbc4..b7342c7 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -314,8 +314,18 @@ module V1
     exception NotBridged { };
 
     /**
-     * A SessionController interface which is used to determine if actions should be
-     * permitted to control on a session and what their result is.
+     * A SessionController interface which is used to invoke critical operations
+     * relating to a session. This is implemented by external components so they can
+     * be controlled by a session and is also implemented by a session so it can be
+     * controlled by external components.
+     *
+     * Note that the operations contained can not be safely invoked on a single instance
+     * by multiple external components at the same time. This could lead to dissimilar state
+     * between the external components ultimately leading to a broken session. This is why
+     * in the Session interface in order to receive a proxy to the SessionController interface
+     * you have to provide a proxy to your own SessionController interface. This is to create
+     * a tight relationship between the two instances.
+     *
      */
     interface SessionController
     {
@@ -324,25 +334,25 @@ module V1
          *
          * @param streams A dictionary of streams and their new state.
          */
-        void streamStatesChanged(AsteriskSCF::Media::V1::StreamStateDict streams);
+        void changeStreamStates(AsteriskSCF::Media::V1::StreamStateDict streams);
 
         /**
-         * Method called when streams are to be added to a session.
+         * Method called when streams are added to a session.
          *
          * @param streams A dictionary of streams with state and requested formats.
          *
          * @return StreamInformationDict A dictionary of streams actually added with state
          *       and formats.
          */
-        AsteriskSCF::Media::V1::StreamInformationDict streamsAdd(AsteriskSCF::Media::V1::StreamInformationDict
+        AsteriskSCF::Media::V1::StreamInformationDict addStreams(AsteriskSCF::Media::V1::StreamInformationDict
                                                                  streams);
 
         /**
-         * Method called when streams are to be removed from a session.
+         * Method called when streams are removed from a session.
          *
-         * @param streams A dictionary of streams to be removed.
+         * @param streams A dictionary of streams removed.
          */
-        void streamsRemoved(AsteriskSCF::Media::V1::StreamInformationDict streams);
+        void removeStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
     };
 
     /**
@@ -506,18 +516,34 @@ module V1
         ["amd"] void removeBridge(SessionListener* listener) throws NotBridged;
 
         /**
-         * Method which sets the session controller on a session and returns a proxy
-         * to the session controller for the session.
+         * 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.
          *
-         * @return SessionController* A proxy to the session controller for the session.
+         * @return SessionController* A proxy to the session controller implemented by
+         *       the session.
+         *
+         * @see SessionController
          */
         SessionController *setAndGetSessionController(SessionController* controller);
 
         /**
          * Method which removes a session controller from a session.
          *
+         * If the passed in proxy is not the current controller this should 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.
          */
         void removeSessionController(SessionController* controller);

commit e5cd7118d887096e0fbaef25d433a5be7a8e2341
Author: Joshua Colp <jcolp at digium.com>
Date:   Thu Jun 23 14:58:37 2011 -0300

    I have finally decided how I want to do this... in order to get a proxy to the SessionController for a session you yourself have to provide a SessionController interface.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index a167354..8e1dbc4 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -504,6 +504,23 @@ module V1
          * @throws NotBridged if the session is not currently in a bridge.
          */
         ["amd"] void removeBridge(SessionListener* listener) throws NotBridged;
+
+        /**
+         * Method which sets the session controller on a session and returns a proxy
+         * to the session controller for the session.
+         *
+         * @param controller A proxy to the SessionController object.
+         *
+         * @return SessionController* A proxy to the session controller for the session.
+         */
+        SessionController *setAndGetSessionController(SessionController* controller);
+
+        /**
+         * Method which removes a session controller from a session.
+         *
+         * @param controller A proxy to the session controller to remove.
+         */
+        void removeSessionController(SessionController* controller);
     };
 
     /**

commit 01f50ffc657af8c961be5461b02663d9473c7e66
Author: Joshua Colp <jcolp at digium.com>
Date:   Thu Jun 23 11:15:21 2011 -0300

    Add SessionController interface, still deciding how to expose it.

diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 507ce1e..a167354 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -141,47 +141,6 @@ module V1
     };
 
     /**
-     * Stream specific indication class. Useful if a consumer only cares
-     * about stream specific indications.
-     */
-    unsliceable class StreamIndication extends Indication
-    {
-    };
-
-    /**
-     * Indication that a session has had streams added to it.
-     */
-    unsliceable class StreamsAddedIndication extends StreamIndication
-    {
-        /**
-         * Streams that have been added and their information.
-         */
-        AsteriskSCF::Media::V1::StreamInformationDict streams;
-    };
-
-    /**
-     * Indication that a session has had stream information updated on it.
-     */
-    unsliceable class StreamsUpdatedIndication extends StreamIndication
-    {
-        /**
-         * Streams that have been updated and their information.
-         */
-        AsteriskSCF::Media::V1::StreamInformationDict streams;
-    };
-
-    /**
-     * Indication that a session has had streams removed from it.
-     */
-    unsliceable class StreamsRemovedIndication extends StreamIndication
-    {
-        /**
-         * Streams that have been removed and their information.
-         */
-        AsteriskSCF::Media::V1::StreamInformationDict streams;
-    };
-
-    /**
      * Telephony specific indication class. Useful if a consumer only cares
      * about telephony specific indications.
      */
@@ -355,6 +314,38 @@ module V1
     exception NotBridged { };
 
     /**
+     * A SessionController interface which is used to determine if actions should be
+     * permitted to control on a session and what their result is.
+     */
+    interface SessionController
+    {
+        /**
+         * Method called when stream states change.
+         *
+         * @param streams A dictionary of streams and their new state.
+         */
+        void streamStatesChanged(AsteriskSCF::Media::V1::StreamStateDict streams);
+
+        /**
+         * Method called when streams are to be added to a session.
+         *
+         * @param streams A dictionary of streams with state and requested formats.
+         *
+         * @return StreamInformationDict A dictionary of streams actually added with state
+         *       and formats.
+         */
+        AsteriskSCF::Media::V1::StreamInformationDict streamsAdd(AsteriskSCF::Media::V1::StreamInformationDict
+                                                                 streams);
+
+        /**
+         * Method called when streams are to be removed from a session.
+         *
+         * @param streams A dictionary of streams to be removed.
+         */
+        void streamsRemoved(AsteriskSCF::Media::V1::StreamInformationDict streams);
+    };
+
+    /**
      * A Session object encapsulates a session oriented dialogue with a peer
      * agent. Registered SessionListener objects are notified of responses from
      * the peer as the dialogue progresses.
@@ -455,27 +446,6 @@ module V1
         ["amd"] AsteriskSCF::Media::V1::StreamInformationDict getStreams();
 
         /**
-         * Method which changes the state of streams.
-         *
-         * @param streams A dictionary of streams and their new state.
-         */
-        ["amd"] void changeStreamStates(AsteriskSCF::Media::V1::StreamStateDict streams);
-
-        /**
-         * Method which requests that streams be added to the session.
-         *
-         * @param streams A dictionary of streams and the requested formats.
-         */
-        void addStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
-
-        /**
-         * Method which requests that streams be removed from the session.
-         *
-         * @param streams A dictionary of streams to remove.
-         */
-        void removeStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
-
-        /**
          * Retrieve a media session instance, if available, for the current session.
          * A media session object may not be available at the time this is called.
          * For example, in SIP before media details are known.

commit bb0fe22eb27c0744b020e7d7b74a589261eb528e
Author: Joshua Colp <jcolp at digium.com>
Date:   Tue Jun 21 21:12:53 2011 -0300

    Add the ability to request that streams be added or removed from a session.

diff --git a/slice/AsteriskSCF/Media/MediaIf.ice b/slice/AsteriskSCF/Media/MediaIf.ice
index 5af9d9c..456064d 100644
--- a/slice/AsteriskSCF/Media/MediaIf.ice
+++ b/slice/AsteriskSCF/Media/MediaIf.ice
@@ -111,6 +111,11 @@ module V1
          * Media is not being sent or received.
          */
         Inactive,
+
+        /**
+         * The stream is no longer available.
+         */
+        Removed,
     };
 
     /**
diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 6949ac4..507ce1e 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -462,6 +462,20 @@ module V1
         ["amd"] void changeStreamStates(AsteriskSCF::Media::V1::StreamStateDict streams);
 
         /**
+         * Method which requests that streams be added to the session.
+         *
+         * @param streams A dictionary of streams and the requested formats.
+         */
+        void addStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
+
+        /**
+         * Method which requests that streams be removed from the session.
+         *
+         * @param streams A dictionary of streams to remove.
+         */
+        void removeStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
+
+        /**
          * Retrieve a media session instance, if available, for the current session.
          * A media session object may not be available at the time this is called.
          * For example, in SIP before media details are known.

commit 05e245ef7614b5f2ab3b2dfadd2ad1aa100952c9
Author: Joshua Colp <jcolp at digium.com>
Date:   Tue Jun 21 20:50:35 2011 -0300

    Move things to the proper place.

diff --git a/AsteriskSCF/Media/Formats/AudioFormats.ice b/slice/AsteriskSCF/Media/Formats/AudioFormats.ice
similarity index 100%
rename from AsteriskSCF/Media/Formats/AudioFormats.ice
rename to slice/AsteriskSCF/Media/Formats/AudioFormats.ice
diff --git a/AsteriskSCF/Media/SDP/MediaSDPIf.ice b/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
similarity index 100%
rename from AsteriskSCF/Media/SDP/MediaSDPIf.ice
rename to slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice

commit 4af55933ca352d394f061566fabdb17fe1819fe9
Merge: 131f6d9 5bde5f1
Author: Joshua Colp <jcolp at digium.com>
Date:   Tue Jun 21 20:49:34 2011 -0300

    Merge branch 'master' into media


commit 131f6d92c009e34dc41b79b076200876883cc34b
Author: Joshua Colp <jcolp at digium.com>
Date:   Tue Jun 21 15:55:09 2011 -0300

    Add stream related indications so a listener can be aware of when streams are added, updated, and removed.

diff --git a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 25261c6..2e97c88 100644
--- a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -128,6 +128,47 @@ module V1
     };
 
     /**
+     * Stream specific indication class. Useful if a consumer only cares
+     * about stream specific indications.
+     */
+    unsliceable class StreamIndication extends Indication
+    {
+    };
+
+    /**
+     * Indication that a session has had streams added to it.
+     */
+    unsliceable class StreamsAddedIndication extends StreamIndication
+    {
+        /**
+         * Streams that have been added and their information.
+         */
+        AsteriskSCF::Media::V1::StreamInformationDict streams;
+    };
+
+    /**
+     * Indication that a session has had stream information updated on it.
+     */
+    unsliceable class StreamsUpdatedIndication extends StreamIndication
+    {
+        /**
+         * Streams that have been updated and their information.
+         */
+        AsteriskSCF::Media::V1::StreamInformationDict streams;
+    };
+
+    /**
+     * Indication that a session has had streams removed from it.
+     */
+    unsliceable class StreamsRemovedIndication extends StreamIndication
+    {
+        /**
+         * Streams that have been removed and their information.
+         */
+        AsteriskSCF::Media::V1::StreamInformationDict streams;
+    };
+
+    /**
      * Telephony specific indication class. Useful if a consumer only cares
      * about telephony specific indications.
      */

commit ae69d3aad2b90b621d89de835fe8788dc1fe979b
Author: Joshua Colp <jcolp at digium.com>
Date:   Tue Jun 21 14:31:02 2011 -0300

    Add support for representing streams in the media architecture. The following items are covered:
    
    1. Each stream is identifiable by a name or identifier.
    2. It's possible to retrieve all streams along with their state, formats, sinks, and sources from
       a session using the getStreams() call. This is done so that the number of RPCs is kept to a
       minimum. If you are getting the streams chances are you are wanting to do something based on all
       of that information so retrieving it all individually would be silly.
    3. It's possible to change the state of stream(s) by calling the changeStreamStates() function on
       a session. Valid states are SendAndReceive, SendOnly, ReceiveOnly, and Inactive. For performance
       reasons it will be highly suggested to switch streams that are not being used to an Inactive state.
    4. Stream information can be passed along to an endpoint in the createSession() call as an argument so
       that the newly created session will have a stream topology compatible with a caller. This will be
       optional though for cases where no stream topology already exists.

diff --git a/AsteriskSCF/Media/MediaIf.ice b/AsteriskSCF/Media/MediaIf.ice
index 642ed34..5af9d9c 100644
--- a/AsteriskSCF/Media/MediaIf.ice
+++ b/AsteriskSCF/Media/MediaIf.ice
@@ -88,6 +88,72 @@ module V1
     sequence<Frame> FrameSeq;
 
     /**
+     * States that a stream can be in.
+     */
+    enum StreamState
+    {
+        /**
+         * Media is being sent and received.
+         */
+        SendAndReceive,
+
+        /**
+         * Media is only being sent out.
+         */
+        SendOnly,
+
+        /**
+         * Media is only being received.
+         */
+        ReceiveOnly,
+
+        /**
+         * Media is not being sent or received.
+         */
+        Inactive,
+    };
+
+    /**
+     * Class which contains information about a stream.
+     */
+    class StreamInformation
+    {
+        /**
+         * Current state of the stream.
+         *
+         * Default value is to send and receive media.
+         */
+        StreamState state = SendAndReceive;
+
+        /**
+         * Formats carried over this stream.
+         */
+        FormatSeq formats;
+
+        /**
+         * Sinks where media can be sent.
+         */
+        StreamSinkSeq sinks;
+
+        /**
+         * Sources where media may come from.
+         */
+        StreamSourceSeq sources;
+    };
+
+    /**
+     * A dictionary of streams. The key is a unique identifier for the stream.
+     * The value is information about the stream.
+     */
+    dictionary<string, StreamInformation> StreamInformationDict;
+
+    /**
+     * A dictionary of streams and states. This is used to change the state of
+     * streams.
+     */
+    dictionary<string, StreamState> StreamStateDict;
+
+    /**
      * Interface to a container of media sources and sinks.
      */
     interface Session
diff --git a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 7d53e82..25261c6 100644
--- a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -334,6 +334,20 @@ module V1
         ["amd"] SessionInfo getInfo();
 
         /**
+         * Method which retrieves streams on the session.
+         *
+         * @return A StreamInformationDict containing streams and information about them.
+         */
+        ["amd"] AsteriskSCF::Media::V1::StreamInformationDict getStreams();
+
+        /**
+         * Method which changes the state of streams.
+         *
+         * @param streams A dictionary of streams and their new state.
+         */
+        ["amd"] void changeStreamStates(AsteriskSCF::Media::V1::StreamStateDict streams);
+
+        /**
          * Retrieve a media session instance, if available, for the current session.
          * A media session object may not be available at the time this is called.
          * For example, in SIP before media details are known.
@@ -552,7 +566,8 @@ module V1
     {
         /**
          * Creates a session for the specified destination, optionally registering
-         * a SessionListener object for notification of changes to the session.
+         * a SessionListener object for notification of changes to the session and also
+         * optionally specifying the streams that should be present on the session.
          *
          * @param destination A stringified identifier or address for the destination.
          *
@@ -560,10 +575,14 @@ module V1
          *    newly created session. May be a nil reference if an initial listener is not
          *    required.
          *
+         * @param topology A dictionary of streams and the formats that should be carried
+         *    on them.
+         *
          * @return A newly created session object for the destination.
          *
          */
-        Session* createSession(string destination, SessionListener* callback);
+        Session* createSession(string destination, SessionListener* callback,
+                               AsteriskSCF::Media::V1::StreamInformationDict topology);
 
         /**
          * Returns the active sessions for this session endpoint.

commit 8508ac568a89f2c64c1bdbd26e200ec5c79b94d3
Author: Joshua Colp <jcolp at digium.com>
Date:   Mon Jun 20 18:14:02 2011 -0300

    After further thought I have decided to stop using ice_id() and use the name field instead.

diff --git a/AsteriskSCF/Media/MediaIf.ice b/AsteriskSCF/Media/MediaIf.ice
index 5d7675b..642ed34 100644
--- a/AsteriskSCF/Media/MediaIf.ice
+++ b/AsteriskSCF/Media/MediaIf.ice
@@ -298,8 +298,10 @@ module V1
     ["visitor:FormatVisitor"] class Format
     {
         /**
-         * A string containing a human readable name for the format, this may not be unique and is
-         * only meant to be used in logging and event messages.
+         * A string containing a name for the format, this should be unique to the specifications of the format
+         * and is used to do a baseline comparison of two formats to decide if they contain similar details.
+         *
+         * This *must* be populated.
          */
         string name;
 

commit 6c301dcd45e664fa3b31e981d1ec4f7889aa5559
Author: Joshua Colp <jcolp at digium.com>
Date:   Mon Jun 20 09:03:04 2011 -0300

    Clarify the units.

diff --git a/AsteriskSCF/Media/MediaIf.ice b/AsteriskSCF/Media/MediaIf.ice
index 04225e4..5d7675b 100644
--- a/AsteriskSCF/Media/MediaIf.ice
+++ b/AsteriskSCF/Media/MediaIf.ice
@@ -315,22 +315,22 @@ module V1
     class AudioFormat extends Format
     {
         /**
-         * Numerical sample rate.
+         * Numerical sample rate specified in Hz.
          */
         int sampleRate;
 
         /**
-         * Numerical frame size.
+         * Numerical samples per frame.
          */
         int frameSize;
 
         /**
-         * Numerical maximum frame size that is supported.
+         * Numerical maximum samples per frame that is supported.
          */
         int maximumFrameSize;
 
         /**
-         * Numerical minimum frame size that is supported.
+         * Numerical minimum samples per frame that is supported.
          */
         int minimumFrameSize;
     };
@@ -341,12 +341,12 @@ module V1
     class VideoFormat extends Format
     {
         /**
-         * Numerical maximum allowed bandwidth.
+         * Numerical maximum allowed bandwidth specified in Kbps.
          */
         int maximumBandwidth;
 
         /**
-         * Numerical maximum allowed bitrate.
+         * Numerical maximum allowed bitrate specified in Kbps.
          */
         int maximumBitrate;
     };

commit c839c3e76d6b3f1a96bd93126c071bbd672c3381
Author: Joshua Colp <jcolp at digium.com>
Date:   Sun Jun 19 21:47:44 2011 -0300

    Incorporate some feedback from the review.

diff --git a/AsteriskSCF/Media/Formats/AudioFormats.ice b/AsteriskSCF/Media/Formats/AudioFormats.ice
index 3272c1e..349f1b7 100644
--- a/AsteriskSCF/Media/Formats/AudioFormats.ice
+++ b/AsteriskSCF/Media/Formats/AudioFormats.ice
@@ -37,22 +37,22 @@ module V1
     const string Version = "V1";
 
     /**
-     * ULAW Audio Format 
+     * G.711 u-Law Audio Format 
      */
-    unsliceable class ULAW extends AsteriskSCF::Media::V1::AudioFormat
+    unsliceable class G711uLAW extends AsteriskSCF::Media::V1::AudioFormat
     {
         /**
-         * ULAW is so basic that no additional parameters are required
+         * u-Law is so basic that no additional parameters are required
          */
     };
 
     /**
-     * ALAW Audio Format
+     * G.711 a-Law Audio Format
      */
-    unsliceable class ALAW extends AsteriskSCF::Media::V1::AudioFormat
+    unsliceable class G711aLAW extends AsteriskSCF::Media::V1::AudioFormat
     {
         /**
-         * ALAW is so basic that no additional parameters are required
+         * a-Law is so basic that no additional parameters are required
          */
     };
 
diff --git a/AsteriskSCF/Media/MediaIf.ice b/AsteriskSCF/Media/MediaIf.ice
index b03216b..04225e4 100644
--- a/AsteriskSCF/Media/MediaIf.ice
+++ b/AsteriskSCF/Media/MediaIf.ice
@@ -36,21 +36,27 @@ module V1
     /**
      * Forward declaration of the Frame class so we can define a sequence of them.
      */
+    class Frame;
+
+    /**
+     * Visitor class for frames.
+     */
     ["visitor"] local class FrameVisitor
     {
     };
 
-    class Frame;
-
     /**
      * Forward declaration of the Format class so we can define a sequence of them.
      */
+    class Format;
+
+    /**
+     * Visitor class for formats.
+     */
     ["visitor"] local class FormatVisitor
     {
     };
 
-    class Format;
-
     /**
      * Forward declaration of the StreamSource interface so we can define a sequence of proxies to them.
      */
@@ -109,7 +115,7 @@ module V1
     };
 
     /**
-     * Exception that gets thrown if a sink receives a format that it can not handle.
+     * Exception that gets thrown if a sink receives a format that it cannot handle.
      */
     exception UnsupportedMediaFormatException { };
 
@@ -119,7 +125,7 @@ module V1
     exception FatalStreamException { };
 
     /**
-     * Exception that gets thrown if a source can not switch to a different format.
+     * Exception that gets thrown if a source cannot switch to a different format.
      */
     exception MediaFormatSwitchException { };
 
@@ -164,7 +170,7 @@ module V1
         idempotent string getId();
 
         /**
-         * Method which requests that the source change the format of frames being sent to the sink.
+         * Method which requests that the source change the format of frames being sent to ALL sinks.
          *
          * @param Format A concrete class describing the format to change to.
          *
@@ -193,6 +199,8 @@ module V1
         /**
          * Method which changes the source of media being sent to this sink.
          *
+         * NOTE: This operation should only be called by the StreamSource itself.
+         *
          * @param source A proxy to the stream source that media is being received from.
          */
         idempotent void setSource(StreamSource* source);
@@ -228,7 +236,7 @@ module V1
         /**
          * A concrete format class describing the format that this frame is in.
          */
-        Format mediaformat;
+        Format mediaFormat;
 
         /**
          * A sequence of bytes which contain the actual data payload of this frame.
@@ -237,7 +245,7 @@ module V1
     };
 
     /**
-     * An additional frame class which is provided for stream based frames.
+     * An additional frame class which is provided for frames that are part of a stream.
      */
     class StreamFrame extends Frame
     {
@@ -267,9 +275,9 @@ module V1
     };
 
     /**
-     * Interface used to perform a compatibility check between two formats.
+     * Interface used to perform operations on a format.
      */
-    interface CompatibilityCheckService
+    interface FormatOperationsService
     {
         /**
          * Method which determines if two formats are compatible or not.
@@ -280,12 +288,12 @@ module V1
          *
          * @return bool True if compatible, false if not.
          */
-        idempotent bool check(Format format1, Format format2);
+        idempotent bool checkCompatible(Format format1, Format format2);
     };
 
     /**
      * A generic format class that provides common information about formats. Additional classes should extend
-     * this to provide additional details about the format.
+     * this to provide additional details about their format.
      */
     ["visitor:FormatVisitor"] class Format
     {
@@ -296,9 +304,9 @@ module V1
         string name;
 
         /**
-         * A proxy to the service that determines if this format is compatible with another.
+         * A proxy to a service that can perform operations relating to this format.
          */
-        CompatibilityCheckService *compatibilityCheck;
+        FormatOperationsService *operations;
     };
 
     /**

commit ef35c13e7a97a4d7051c057d56ba7af8eb4e0019
Author: Joshua Colp <jcolp at digium.com>
Date:   Thu Jun 9 11:08:44 2011 -0300

    compatibility -> compatible

diff --git a/AsteriskSCF/Media/MediaIf.ice b/AsteriskSCF/Media/MediaIf.ice
index e00d48f..b03216b 100644
--- a/AsteriskSCF/Media/MediaIf.ice
+++ b/AsteriskSCF/Media/MediaIf.ice
@@ -278,7 +278,7 @@ module V1
          *
          * @param format2 Second format.
          *
-         * @return bool True if compatibility, false if not.
+         * @return bool True if compatible, false if not.
          */
         idempotent bool check(Format format1, Format format2);
     };

commit e2b00970bce930cf3cafe5203aa459ddd1af308f
Author: Joshua Colp <jcolp at digium.com>
Date:   Thu Jun 9 11:06:11 2011 -0300

    Add compatibility check service, used to determine if two formats are compatible or not.

diff --git a/AsteriskSCF/Media/MediaIf.ice b/AsteriskSCF/Media/MediaIf.ice
index a0c9842..e00d48f 100644
--- a/AsteriskSCF/Media/MediaIf.ice
+++ b/AsteriskSCF/Media/MediaIf.ice
@@ -267,6 +267,23 @@ module V1
     };
 
     /**
+     * Interface used to perform a compatibility check between two formats.
+     */
+    interface CompatibilityCheckService
+    {
+        /**
+         * Method which determines if two formats are compatible or not.
+         *
+         * @param format1 First format.
+         *
+         * @param format2 Second format.
+         *
+         * @return bool True if compatibility, false if not.
+         */
+        idempotent bool check(Format format1, Format format2);
+    };
+
+    /**
      * A generic format class that provides common information about formats. Additional classes should extend
      * this to provide additional details about the format.
      */
@@ -277,6 +294,11 @@ module V1
          * only meant to be used in logging and event messages.
          */
         string name;
+
+        /**
+         * A proxy to the service that determines if this format is compatible with another.
+         */
+        CompatibilityCheckService *compatibilityCheck;
     };
 
     /**

commit 8766c305ac188e3d7b196a420cb6f0a9ffb6e4d0
Author: Joshua Colp <jcolp at digium.com>
Date:   Thu Jun 9 11:02:22 2011 -0300

    Guidelines cleanup.

diff --git a/AsteriskSCF/Media/Formats/AudioFormats.ice b/AsteriskSCF/Media/Formats/AudioFormats.ice
index 21f52ac..3272c1e 100644
--- a/AsteriskSCF/Media/Formats/AudioFormats.ice
+++ b/AsteriskSCF/Media/Formats/AudioFormats.ice
@@ -31,30 +31,30 @@ module Audio
 ["suppress"]
 module V1
 {
-   /**
-    * String representation of the version of this interface
-    */
-   const string Version = "V1";
+    /**
+     * String representation of the version of this interface
+     */
+    const string Version = "V1";
 
-   /**
-    * ULAW Audio Format 
-    */
-   unsliceable class ULAW extends AsteriskSCF::Media::V1::AudioFormat
-   {
-       /**
-	* ULAW is so basic that no additional parameters are required
-	*/
-   };
+    /**
+     * ULAW Audio Format 
+     */
+    unsliceable class ULAW extends AsteriskSCF::Media::V1::AudioFormat
+    {
+        /**
+         * ULAW is so basic that no additional parameters are required
+         */
+    };
 
-   /**
-    * ALAW Audio Format
-    */
-   unsliceable class ALAW extends AsteriskSCF::Media::V1::AudioFormat
-   {
-       /**
-        * ALAW is so basic that no additional parameters are required
-        */
-   };
+    /**
+     * ALAW Audio Format
+     */
+    unsliceable class ALAW extends AsteriskSCF::Media::V1::AudioFormat
+    {
+        /**
+         * ALAW is so basic that no additional parameters are required
+         */
+    };
 
 }; /*  end module V1 */
 
diff --git a/AsteriskSCF/Media/MediaIf.ice b/AsteriskSCF/Media/MediaIf.ice
index fb8524e..a0c9842 100644
--- a/AsteriskSCF/Media/MediaIf.ice
+++ b/AsteriskSCF/Media/MediaIf.ice
@@ -28,299 +28,298 @@ module Media
 ["suppress"]
 module V1
 {
-   /**
-    * String representation of the version of this interface
-    */
-   const string Version = "V1";
-
-   /**
-    * Forward declaration of the Frame class so we can define a sequence of them.
-    */
-   ["visitor"] local class FrameVisitor
-   {
-   };
-
-   class Frame;
-
-   /**
-    * Forward declaration of the Format class so we can define a sequence of them.
-    */
-   ["visitor"] local class FormatVisitor
-   {
-   };
-
-   class Format;
-
-   /**
-    * Forward declaration of the StreamSource interface so we can define a sequence of proxies to them.
-    */
-   interface StreamSource;
-
-   /**
-    * Forward declaration of the StreamSink interface so we can define a sequence of proxies to them.
-    */
-   interface StreamSink;
-
-   /**
-    * A sequence of stream source proxies.
-    */
-   sequence<StreamSource*> StreamSourceSeq;
-
-   /**
-    * A sequence of stream sink proxies.
-    */
-   sequence<StreamSink*> StreamSinkSeq;
-
-   /**
-    * A sequence of concrete formats.
-    */
-   sequence<Format> FormatSeq;
-
-   /**
-    * A sequence of concrete frames.
-    */
-   sequence<Frame> FrameSeq;
-
-   /**
-    * Interface to a container of media sources and sinks.
-    */
-   interface Session
-   {
-      /**
-       * Method which returns the stream sources that are on the session.
-       *
-       * @return StreamSourceSeq A sequence of stream sources.
-       */
-      StreamSourceSeq getSources();
-
-      /**
-       * Method which returns the stream sinks that are on the session.
-       *
-       * @return StreamSinkSeq A sequence of stream sinks.
-       */
-      StreamSinkSeq getSinks();
-
-      /**
-       * Method which returns a unique identifier for the session.
-       *
-       * @return string A string identifier for the session.
-       */
-      idempotent string getId();
-   };
-
-   /**
-    * Exception that gets thrown if a sink receives a format that it can not handle.
-    */
-   exception UnsupportedMediaFormatException { };
-
-   /**
-    * Exception that gets thrown if a fatal error occurs on a stream or sink.
-    */
-   exception FatalStreamException { };
-
-   /**
-    * Exception that gets thrown if a source can not switch to a different format.
-    */
-   exception MediaFormatSwitchException { };
-
-
-   /**
-    * Interface to a source of media.
-    */
-   interface StreamSource
-   {
-      /**
-       * Method which adds a sink that media will be written to.
-       *
-       * @param destination A proxy to a stream sink where media will be sent to.
-       */
-      void addSink(StreamSink* destination);
-      /**
-       * Method which removes a sink. Once removed media will no longer be written to it.
-       *
-       * @param destination A proxy to the stream sink to be removed.
-       */
-      void removeSink(StreamSink* destination);
-
-      /**
-       * Method which retrieves the current stream sinks for media.
-       *
-       * @return StreamSinkSeq A sequence of proxies where media is being written to.
-       */
-      idempotent StreamSinkSeq getSinks();
-
-      /**
-       * Method which returns the formats that frames from this source may come in.
-       *
-       * @return FormatSeq A sequence of concrete format classes.
-       */
-      idempotent FormatSeq getFormats();
-
-      /**
-       * Method which returns a unique identifier for the source.
-       *
-       * @return string A string identifier for the source.
-       */
-      idempotent string getId();
-
-      /**
-       * Method which requests that the source change the format of frames being sent to the sink.
-       *
-       * @param Format A concrete class describing the format to change to.
-       *
-       * @throws MediaFormatSwitchException if the source could not be switched to the requested format.
-       */
-      void requestFormat(Format newformat) throws MediaFormatSwitchException;
-   };
-
-
-   /**
-    * Interface to a sink for media.
-    */
-   interface StreamSink
-   {
-      /**
-       * Method which gives the implementation a sequence of frames which it will then deal with in an implementation
-       * specific manner.
-       *
-       * @param frames A sequence of frames.
-       *
-       * @throws UnsupportedMediaFormatException if the format of a frame is not supported by the sink.
-       *
-       * @throws FatalStreamException if the frame could not be handled due to reasons outside the control of the sink.
-       */
-      void write(FrameSeq frames) throws UnsupportedMediaFormatException, FatalStreamException;
-
-      /**
-       * Method which changes the source of media being sent to this sink.
-       *
-       * @param source A proxy to the stream source that media is being received from.
-       */
-      idempotent void setSource(StreamSource* source);
-
-      /**
-       * Method which retrieves the current stream source of media.
-       *
-       * @return StreamSource* A proxy to the stream source that media is being received from.
-       */
-      idempotent StreamSource* getSource();
-
-      /**
-       * Method which returns the formats of frames that this sink can handle.
-       *
-       * @return FormatSeq A sequence of concrete format classes.
-       */
-      idempotent FormatSeq getFormats();
-
-      /**
-       * Method which returns a unique identifier for the sink.
-       *
-       * @return string A string identifier for the sink.
-       */
-      idempotent string getId();
-   };
-
-   /**
-    * A generic frame class that contains common details about frames. Additional classes should extend this to provide
-    * additional details about the frame.
-    */
-   ["visitor:FrameVisitor"] class Frame
-   {
-      /**
-       * A concrete format class describing the format that this frame is in.
-       */
-      Format mediaformat;
-
-      /**
-       * A sequence of bytes which contain the actual data payload of this frame.
-       */
-      Ice::ByteSeq payload;
-   };
-
-   /**
-    * An additional frame class which is provided for stream based frames.
-    */
-   class StreamFrame extends Frame
-   {
-      /**
-       * Timestamp of the frame.
-       */
-      long timestamp;
-
-      /**
-       * Numerical sequence number of the frame.
-       */
-      long seqno;
-   };
-
-   /**
-    * An additional frame class which is provided for audio frames.
-    */
-   class AudioFrame extends StreamFrame
-   {
-   };
-
-   /**
-    * An additional frame class which is provided for video frames.
-    */
-   class VideoFrame extends StreamFrame
-   {
-   };
-
-   /**
-    * A generic format class that provides common information about formats. Additional classes should extend
-    * this to provide additional details about the format.
-    */
-   ["visitor:FormatVisitor"] class Format
-   {
-      /**
-       * A string containing a human readable name for the format, this may not be unique and is
-       * only meant to be used in logging and event messages.
-       */
-      string name;
-   };
-
-   /**
-    * An additional format class which is provided for audio formats.
-    */
-   class AudioFormat extends Format
-   {
-      /**
-       * Numerical sample rate.
-       */
-      int sampleRate;
-
-      /**
-       * Numerical frame size.
-       */
-      int frameSize;
-
-      /**
-       * Numerical maximum frame size that is supported.
-       */
-      int maximumFrameSize;
-
-      /**
-       * Numerical minimum frame size that is supported.
-       */
-      int minimumFrameSize;
-   };
-
-   /**
-    * An additional format class which is provided for video formats.
-    */
-   class VideoFormat extends Format
-   {
-      /**
-       * Numerical maximum allowed bandwidth.
-       */
-      int maximumBandwidth;
-
-      /**
-       * Numerical maximum allowed bitrate.
-       */
-      int maximumBitrate;
-   };
+    /**
+     * String representation of the version of this interface
+     */
+    const string Version = "V1";
+
+    /**
+     * Forward declaration of the Frame class so we can define a sequence of them.
+     */
+    ["visitor"] local class FrameVisitor
+    {
+    };
+
+    class Frame;
+
+    /**
+     * Forward declaration of the Format class so we can define a sequence of them.
+     */
+    ["visitor"] local class FormatVisitor
+    {
+    };
+
+    class Format;
+
+    /**
+     * Forward declaration of the StreamSource interface so we can define a sequence of proxies to them.
+     */
+    interface StreamSource;
+
+    /**
+     * Forward declaration of the StreamSink interface so we can define a sequence of proxies to them.
+     */
+    interface StreamSink;
+
+    /**
+     * A sequence of stream source proxies.
+     */
+    sequence<StreamSource*> StreamSourceSeq;
+
+    /**
+     * A sequence of stream sink proxies.
+     */
+    sequence<StreamSink*> StreamSinkSeq;
+
+    /**
+     * A sequence of concrete formats.
+     */
+    sequence<Format> FormatSeq;
+
+    /**
+     * A sequence of concrete frames.
+     */
+    sequence<Frame> FrameSeq;
+
+    /**
+     * Interface to a container of media sources and sinks.
+     */
+    interface Session
+    {
+        /**
+         * Method which returns the stream sources that are on the session.
+         *
+         * @return StreamSourceSeq A sequence of stream sources.
+         */
+        StreamSourceSeq getSources();
+
+        /**
+         * Method which returns the stream sinks that are on the session.
+         *
+         * @return StreamSinkSeq A sequence of stream sinks.
+         */
+        StreamSinkSeq getSinks();
+
+        /**
+         * Method which returns a unique identifier for the session.
+         *
+         * @return string A string identifier for the session.
+         */
+        idempotent string getId();
+    };
+
+    /**
+     * Exception that gets thrown if a sink receives a format that it can not handle.
+     */
+    exception UnsupportedMediaFormatException { };
+
+    /**
+     * Exception that gets thrown if a fatal error occurs on a stream or sink.
+     */
+    exception FatalStreamException { };
+
+    /**
+     * Exception that gets thrown if a source can not switch to a different format.
+     */
+    exception MediaFormatSwitchException { };
+
+    /**
+     * Interface to a source of media.
+     */
+    interface StreamSource
+    {
+        /**
+         * Method which adds a sink that media will be written to.
+         *
+         * @param destination A proxy to a stream sink where media will be sent to.
+         */
+        void addSink(StreamSink* destination);
+
+        /**
+         * Method which removes a sink. Once removed media will no longer be written to it.
+         *
+         * @param destination A proxy to the stream sink to be removed.
+         */
+        void removeSink(StreamSink* destination);
+
+        /**
+         * Method which retrieves the current stream sinks for media.
+         *
+         * @return StreamSinkSeq A sequence of proxies where media is being written to.
+         */
+        idempotent StreamSinkSeq getSinks();
+
+        /**
+         * Method which returns the formats that frames from this source may come in.
+         *
+         * @return FormatSeq A sequence of concrete format classes.
+         */
+        idempotent FormatSeq getFormats();
+
+        /**
+         * Method which returns a unique identifier for the source.
+         *
+         * @return string A string identifier for the source.
+         */
+        idempotent string getId();
+
+        /**
+         * Method which requests that the source change the format of frames being sent to the sink.
+         *
+         * @param Format A concrete class describing the format to change to.
+         *
+         * @throws MediaFormatSwitchException if the source could not be switched to the requested format.
+         */
+        void requestFormat(Format newformat) throws MediaFormatSwitchException;
+    };
+
+    /**
+     * Interface to a sink for media.
+     */
+    interface StreamSink
+    {
+        /**
+         * Method which gives the implementation a sequence of frames which it will then deal with in an implementation
+         * specific manner.
+         *
+         * @param frames A sequence of frames.
+         *
+         * @throws UnsupportedMediaFormatException if the format of a frame is not supported by the sink.
+         *
+         * @throws FatalStreamException if the frame could not be handled due to reasons outside the control of the sink.
+         */
+        void write(FrameSeq frames) throws UnsupportedMediaFormatException, FatalStreamException;
+
+        /**
+         * Method which changes the source of media being sent to this sink.
+         *
+         * @param source A proxy to the stream source that media is being received from.
+         */
+        idempotent void setSource(StreamSource* source);
+
+        /**
+         * Method which retrieves the current stream source of media.
+         *
+         * @return StreamSource* A proxy to the stream source that media is being received from.
+         */
+        idempotent StreamSource* getSource();
+
+        /**
+         * Method which returns the formats of frames that this sink can handle.
+         *
+         * @return FormatSeq A sequence of concrete format classes.
+         */
+        idempotent FormatSeq getFormats();
+
+        /**
+         * Method which returns a unique identifier for the sink.
+         *
+         * @return string A string identifier for the sink.
+         */
+        idempotent string getId();
+    };
+
+    /**
+     * A generic frame class that contains common details about frames. Additional classes should extend this to provide
+     * additional details about the frame.
+     */
+    ["visitor:FrameVisitor"] class Frame
+    {
+        /**
+         * A concrete format class describing the format that this frame is in.
+         */
+        Format mediaformat;
+
+        /**
+         * A sequence of bytes which contain the actual data payload of this frame.
+         */
+        Ice::ByteSeq payload;
+    };
+
+    /**
+     * An additional frame class which is provided for stream based frames.
+     */
+    class StreamFrame extends Frame
+    {
+        /**
+         * Timestamp of the frame.
+         */
+        long timestamp;
+
+        /**
+         * Numerical sequence number of the frame.
+         */
+        long seqno;
+    };
+
+    /**
+     * An additional frame class which is provided for audio frames.
+     */
+    class AudioFrame extends StreamFrame
+    {
+    };
+
+    /**
+     * An additional frame class which is provided for video frames.
+     */
+    class VideoFrame extends StreamFrame
+    {
+    };
+
+    /**
+     * A generic format class that provides common information about formats. Additional classes should extend
+     * this to provide additional details about the format.
+     */
+    ["visitor:FormatVisitor"] class Format
+    {
+        /**
+         * A string containing a human readable name for the format, this may not be unique and is
+         * only meant to be used in logging and event messages.
+         */
+        string name;
+    };
+
+    /**
+     * An additional format class which is provided for audio formats.
+     */
+    class AudioFormat extends Format
+    {
+        /**
+         * Numerical sample rate.
+         */
+        int sampleRate;
+
+        /**
+         * Numerical frame size.
+         */
+        int frameSize;
+
+        /**
+         * Numerical maximum frame size that is supported.
+         */
+        int maximumFrameSize;
+
+        /**
+         * Numerical minimum frame size that is supported.
+         */
+        int minimumFrameSize;
+    };
+
+    /**
+     * An additional format class which is provided for video formats.
+     */
+    class VideoFormat extends Format
+    {
+        /**
+         * Numerical maximum allowed bandwidth.
+         */
+        int maximumBandwidth;
+
+        /**
+         * Numerical maximum allowed bitrate.
+         */
+        int maximumBitrate;
+    };
 
 }; /*  end module V1 */
 
diff --git a/AsteriskSCF/Media/SDP/MediaSDPIf.ice b/AsteriskSCF/Media/SDP/MediaSDPIf.ice
index e1a3c57..0750835 100644
--- a/AsteriskSCF/Media/SDP/MediaSDPIf.ice
+++ b/AsteriskSCF/Media/SDP/MediaSDPIf.ice
@@ -29,90 +29,90 @@ module SDP
 ["suppress"]
 module V1
 {
-   /**
-    * String representation of the version of this interface
-    */
-   const string Version = "V1";
-
-   /**
-    * Extended discovery class for SDP descriptor services.
-    */
-   unsliceable class SDPDescriptorServiceLocatorParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
-   {
-      /**
-       * Name of the media format.
-       */
-      string name;
-   };
-
-   /**
-    * A sequence of strings with each string containing a format specific parameter from SDP.
-    */
-   sequence<string> SDPFormatParameterSeq;
-
-   /**
-    * SDP Descriptor class. Contains description information for a media format.
-    */
-   class SDPDescriptor
-   {
-       /**
-	* Numerical payload value given in the SDP.
-	*/
-       int payload;
-
... 595 lines suppressed ...


-- 
asterisk-scf/release/slice.git



More information about the asterisk-scf-commits mailing list