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

Commits to the Asterisk SCF project code repositories asterisk-scf-commits at lists.digium.com
Mon Apr 25 17:49:52 CDT 2011


branch "route_replica" has been updated
       via  9009a8b228d12a5fcbec680437e5a947a3786e89 (commit)
       via  ccba171dd9b6cd467b04327304d9ca4d28fafd09 (commit)
       via  e130133ce7fd9249e0df85d98d3885d02a49a8c5 (commit)
       via  d163c342ceaab2c54a6c9158f2835af01fd25bcc (commit)
       via  f5c64eb007d3a93c8a00d1bf9774f92ced86d6ce (commit)
       via  18851c74362342d5b24094f8303a2c857d76b7a2 (commit)
       via  7d3e6d011929188c02c0e971df5ad7e5aaa47abf (commit)
       via  e278ea950663828b66a6043286bf47bded5d6bd3 (commit)
       via  6e0b932926db004e0959d59651cebfeb6e98cd64 (commit)
       via  343ae3a9b77b1ee212543b7a21136bb0edfd2ce0 (commit)
       via  9c0438c15bfdcd6e9d52cd1c159c479f1326816d (commit)
       via  e9bde3d397b7fdfe836c5a1e220af0cf8aa980c4 (commit)
       via  3999694534664abcd05e552877619575471aecfa (commit)
       via  53c83aebe5d8ee4c6b3efbaebeb37fc6deee25f6 (commit)
       via  1d7df31480f7c82320f2c11bacc255762c9706ac (commit)
       via  a8a784d62074a5b016ed932c2f9e09dafbe91594 (commit)
       via  03808c76d001e90092849bb52f277b6f7713f36f (commit)
       via  5629f1652f640cb6034e1d7542c913b56837cdbb (commit)
       via  359f71e0291deffc760590cdcec741eb791dd24c (commit)
       via  29cec42e4b83aed107ff007dca85f39990a03b07 (commit)
       via  0ec535ed412b79c7896d2e041bae209183ed2ee8 (commit)
      from  53a31c75334fc80dc0d96b8160f2204000c1799b (commit)

Summary of changes:
 AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice    |    2 +-
 AsteriskSCF/Media/MediaIf.ice                      |   10 +-
 AsteriskSCF/Media/RTP/MediaRTPIf.ice               |    2 +-
 .../SessionCommunicationsIf.ice                    |  866 +++++++++++---------
 ...icationsIf.ice => SessionCommunicationsIf.ice~} |  266 +++++--
 AsteriskSCF/System/Component/ConfigurationIf.ice   |  150 ++--
 AsteriskSCF/System/ThreadPool/ThreadPoolIf.ice     |  122 +++
 AsteriskSCF/System/WorkQueue/WorkQueueIf.ice       |  276 +++++++
 8 files changed, 1163 insertions(+), 531 deletions(-)
 copy AsteriskSCF/SessionCommunications/{SessionCommunicationsIf.ice => SessionCommunicationsIf.ice~} (82%)
 create mode 100644 AsteriskSCF/System/ThreadPool/ThreadPoolIf.ice
 create mode 100644 AsteriskSCF/System/WorkQueue/WorkQueueIf.ice


- Log -----------------------------------------------------------------
commit 9009a8b228d12a5fcbec680437e5a947a3786e89
Author: Ken Hunt <ken.hunt at digium.com>
Date:   Mon Apr 25 17:49:10 2011 -0500

    Merged route_replica with recent changes from release.

diff --git a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 81de68d..f1cfd2b 100644
--- a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -62,12 +62,12 @@ module V1
      */
     class ResponseCode
     {
-	/**
-	 * ISDN cause code @see http://tools.ietf.org/html/rfc3398
-	 *
-	 * Default value is normal clearing
-	 */
-	int isdnCode = 34;
+    /**
+     * ISDN cause code @see http://tools.ietf.org/html/rfc3398
+     *
+     * Default value is normal clearing
+     */
+    int isdnCode = 34;
     };
 
     /**
@@ -117,14 +117,14 @@ module V1
      * Indication visitor class.
      */
     ["visitor"] local class IndicationVisitor
-		{
+    {
     };
 
     /**
      * Basic indication class. Meant to be extended.
      */
     ["visitor:IndicationVisitor"] unsliceable class Indication
-				  {
+    {
     };
 
     /**
@@ -286,112 +286,112 @@ module V1
      */
     interface Session
     {
-	/**
-	 * Registers an instance of SessionListener with the current
-	 * session.
-	 *
-	 * @param listener an instance of a SessionListener object.
-	 *
-	 * @return a SessionInfo object containing the current state of the session.
-	 *       This allows "listeners" to be configured with a some initial state
-	 *       to give context to future notifications.
-	 *
-	 * @see SessionListener
-	 *
-	 * @see SessionInfo
-	 */
-	SessionInfo addListener(SessionListener* listener);
+    /**
+     * Registers an instance of SessionListener with the current
+     * session.
+     *
+     * @param listener an instance of a SessionListener object.
+     *
+     * @return a SessionInfo object containing the current state of the session.
+     *       This allows "listeners" to be configured with a some initial state
+     *       to give context to future notifications.
+     *
+     * @see SessionListener
+     *
+     * @see SessionInfo
+     */
+    SessionInfo addListener(SessionListener* listener);
 
-        /**
-         * Request that an indication be performed on a session.
-         *
-         * @param event The indication event to perform.
-         *
-         * @throws IndicationException if an error occurs.
-         *
-         * @see Indication
-         *
-         * @see IndicationException
-         */
-        void indicate(Indication event) throws IndicationException;
-
-	/**
-	 * Method which retrieves a proxy to the endpoint object that created the current session.
-	 *
-	 * @return The endpoint object that created the current session.
-	 *
-	 * @see SessionEndpoint
-	 */
-	SessionEndpoint* getEndpoint();
-
-	/**
-	 * Method which retrieves information about the current session's state.
-	 *
-	 * @return A SessionInfo instance with up to date information.
-	 *
-	 * @see SessionInfo
-	 */
-	SessionInfo getInfo();
-
-	/**
-	 * 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.
-	 *
-	 * @return An AsteriskSCF media session for the current session. May be a
-	 *   nil reference if the media part of the session has not been initialized.
-	 */
-	AsteriskSCF::Media::V1::Session* getMediaSession();
-
-	/**
-	 * Removes a listener from the current list. Once removed, a listener
-	 * no longer is notified of changes to the session.
-	 *
-	 * @param listener A proxy to the listener to the remove.
-	 */
-	void removeListener(SessionListener* listener);
-
-	/**
-	 * Start a session dialogue with a peer.
-	 */
-	void start();
-
-	/**
-	 * End the dialogue with the peer, sending the
-	 * provided response code if appropriate.
-	 *
-	 * @param response Code identifying the reason the dialog stopped.
-	 */
-	void stop(ResponseCode response);
-
-	/**
-	 * Gets the bridge object this Session is associated with.
-	 *
-	 * @return A proxy to the bridge the session is presently in.
-	 *
-	 * @throws NotBridged if the session is not currently in a bridge.
-	 */
-	Bridge* getBridge() throws NotBridged;
-
-	/**
-	 * Set the Bridge for this session.
-	 *
-	 * @param bridge A proxy to the Bridge object this Session should be associated with.
-	 *
-	 * @param listener A proxy to the Listener to add to the Session.
-	 *
-	 * @return A current copy of the session information.
-	 */
-	SessionInfo setBridge(Bridge* newBridge, SessionListener* listener);
-
-	/**
-	 * Removes this Session from it's associated Bridge.
-	 *
-	 * @param listener Removes the specified listener from the Session.
-	 *
-	 * @throws NotBridged if the session is not currently in a bridge.
-	 */
-	void removeBridge(SessionListener* listener) throws NotBridged;
+    /**
+     * Request that an indication be performed on a session.
+     *
+     * @param event The indication event to perform.
+     *
+     * @throws IndicationException if an error occurs.
+     *
+     * @see Indication
+     *
+     * @see IndicationException
+     */
+    void indicate(Indication event) throws IndicationException;
+
+    /**
+     * Method which retrieves a proxy to the endpoint object that created the current session.
+     *
+     * @return The endpoint object that created the current session.
+     *
+     * @see SessionEndpoint
+     */
+    SessionEndpoint* getEndpoint();
+
+    /**
+     * Method which retrieves information about the current session's state.
+     *
+     * @return A SessionInfo instance with up to date information.
+     *
+     * @see SessionInfo
+     */
+    SessionInfo getInfo();
+
+    /**
+     * 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.
+     *
+     * @return An AsteriskSCF media session for the current session. May be a
+     *   nil reference if the media part of the session has not been initialized.
+     */
+    AsteriskSCF::Media::V1::Session* getMediaSession();
+
+    /**
+     * Removes a listener from the current list. Once removed, a listener
+     * no longer is notified of changes to the session.
+     *
+     * @param listener A proxy to the listener to the remove.
+     */
+    void removeListener(SessionListener* listener);
+
+    /**
+     * Start a session dialogue with a peer.
+     */
+    void start();
+
+    /**
+     * End the dialogue with the peer, sending the
+     * provided response code if appropriate.
+     *
+     * @param response Code identifying the reason the dialog stopped.
+     */
+    void stop(ResponseCode response);
+
+    /**
+     * Gets the bridge object this Session is associated with.
+     *
+     * @return A proxy to the bridge the session is presently in.
+     *
+     * @throws NotBridged if the session is not currently in a bridge.
+     */
+    Bridge* getBridge() throws NotBridged;
+
+    /**
+     * Set the Bridge for this session.
+     *
+     * @param bridge A proxy to the Bridge object this Session should be associated with.
+     *
+     * @param listener A proxy to the Listener to add to the Session.
+     *
+     * @return A current copy of the session information.
+     */
+    SessionInfo setBridge(Bridge* newBridge, SessionListener* listener);
+
+    /**
+     * Removes this Session from it's associated Bridge.
+     *
+     * @param listener Removes the specified listener from the Session.
+     *
+     * @throws NotBridged if the session is not currently in a bridge.
+     */
+    void removeBridge(SessionListener* listener) throws NotBridged;
     };
 
     /**
@@ -399,10 +399,10 @@ module V1
      */
     exception EndpointUnreachableException
     {
-       /**
-    * String containing the destination endpoint that is unreachable.
-    */
-       string destination;
+        /**
+         * String containing the destination endpoint that is unreachable.
+         */
+        string destination;
     };
 
     /**
@@ -411,8 +411,8 @@ module V1
     exception SessionCreationException
     {
        /**
-    * String containing the endpoint that could not create the session.
-    */
+        * String containing the endpoint that could not create the session.
+        */
        string destination;
     };
 
@@ -422,8 +422,8 @@ module V1
     exception SourceTerminatedPreBridgingException
     {
        /**
-    * String containing the endpoint that was terminated.
-    */
+        * String containing the endpoint that was terminated.
+        */
        string sourceEndpointId;
     };
 
@@ -433,13 +433,13 @@ module V1
     exception BridgingException
     {
        /**
-    * String containing the endpoint of the incoming session.
-    */
+        * String containing the endpoint of the incoming session.
+        */
        string sourceEndpointId;
 
        /**
-    * String containing the endpoint of the outgoing session.
-    */
+        * String containing the endpoint of the outgoing session.
+        */
        string destination;
     };
 
@@ -461,87 +461,87 @@ module V1
      */
     interface SessionRouter
     {
-    /**
-     * Attempts to establish an end-to-end communication between an
-     * existing session and destination identified by an address or ID.
-     *
-     * @param operationId Unique id for this operation.
-     *
-     * @param source The initiating session.
-     *
-     * @param destination The identifier for the destination.
-     *
-     * @throws DestinationNotFoundException if the given destination could not be found.
-     *
-     * @throws EndpointUnreachableException if the destination endpoint could not be reached.
-     *
-     * @throws SessionCreationException if the destination endpoint could not create a session.
-     *
-     * @throws SourceTerminatedPreBridgingException if the source session was terminated early.
-     *
-     * @throws BridgingException if the bridge could not be setup properly.
-     */
-    ["amd"]
-    void routeSession(string operationId, Session* source, string destination)
-       throws AsteriskSCF::Core::Routing::V1::DestinationNotFoundException,
-       EndpointUnreachableException, SessionCreationException,
-       SourceTerminatedPreBridgingException, BridgingException ;
+        /**
+         * Attempts to establish an end-to-end communication between an
+         * existing session and destination identified by an address or ID.
+         *
+         * @param operationId Unique id for this operation.
+         *
+         * @param source The initiating session.
+         *
+         * @param destination The identifier for the destination.
+         *
+         * @throws DestinationNotFoundException if the given destination could not be found.
+         *
+         * @throws EndpointUnreachableException if the destination endpoint could not be reached.
+         *
+         * @throws SessionCreationException if the destination endpoint could not create a session.
+         *
+         * @throws SourceTerminatedPreBridgingException if the source session was terminated early.
+         *
+         * @throws BridgingException if the bridge could not be setup properly.
+         */
+        ["amd"]
+        void routeSession(string operationId, Session* source, string destination)
+           throws AsteriskSCF::Core::Routing::V1::DestinationNotFoundException,
+           EndpointUnreachableException, SessionCreationException,
+           SourceTerminatedPreBridgingException, BridgingException ;
 
-    /**
-     * Replace one session in a Bridge with a new
-     * session routable by the destination param.
-     *
-     * @param operationId Unique id for this operation.
-     *
-     * @param sessionToReplace The session that is to be replaced in a
-     *   bridge. The bridge obejct is obtained from the accessor on this
-     *   proxy.
-     *
-     * @param destination The identifier for the destination to be added to
-     *   the bridge in place of sessionToReplace.
-     *
-     * @throws DestinationNotFoundException if the given destination could not be found.
-     *
-     * @throws SessionCreationException if the destination endpoint could not create a session.
-     *
-     * @throws SourceTerminatedPreBridgingException if the source session was terminated early.
-     *
-     * @throws BridgingException if the bridge could not be setup properly.
-     *
-     * @throws NotBridged if the provided session is not currently in a bridge.
-     */
-    ["amd"]
-    void connectBridgedSessionsWithDestination(string operationId, Session* sessionToReplace, string destination)
-       throws AsteriskSCF::Core::Routing::V1::DestinationNotFoundException,
-       SessionCreationException,
-       SourceTerminatedPreBridgingException, BridgingException, NotBridged ;
+        /**
+         * Replace one session in a Bridge with a new
+         * session routable by the destination param.
+         *
+         * @param operationId Unique id for this operation.
+         *
+         * @param sessionToReplace The session that is to be replaced in a
+         *   bridge. The bridge obejct is obtained from the accessor on this
+         *   proxy.
+         *
+         * @param destination The identifier for the destination to be added to
+         *   the bridge in place of sessionToReplace.
+         *
+         * @throws DestinationNotFoundException if the given destination could not be found.
+         *
+         * @throws SessionCreationException if the destination endpoint could not create a session.
+         *
+         * @throws SourceTerminatedPreBridgingException if the source session was terminated early.
+         *
+         * @throws BridgingException if the bridge could not be setup properly.
+         *
+         * @throws NotBridged if the provided session is not currently in a bridge.
+         */
+        ["amd"]
+        void connectBridgedSessionsWithDestination(string operationId, Session* sessionToReplace, string destination)
+           throws AsteriskSCF::Core::Routing::V1::DestinationNotFoundException,
+           SessionCreationException,
+           SourceTerminatedPreBridgingException, BridgingException, NotBridged ;
 
-    /**
-     * Replace one session in a Bridge with sessions from another bridge.
-     * No routing is actually performed. This operation exists here for consistency,
-     * since connectBridgedSessionsWithDestination(...) is implemented by this interface.
-     *
-     * @param operationId Unique id for this operation.
-     *
-     * @param sessionToReplace The session that is to be replaced in a
-     *   bridge. The bridge obejct associated with this session will survive, and
-     *   all sessions bridged to this session will be kept in the bridge.
-     *
-     * @param bridgedSession This session is assumed to be bridged to the sessions
-     *   that are to be moved to another bridge. The bridgedSession itself will not
-     *   be connected to the other bridge. The sessions being moved will be removed from
-     *   their current bridge before being added to the bridge currenltly attached to
-     *   sessionToReplace.
-     *
-     * @throws SourceTerminatedPreBridgingException if the source session was terminated early.
-     *
-     * @throws BridgingException if the bridge could not be setup properly.
-     *
-     * @throws NotBridged if the session provided in sessionToReplace is not currently in a bridge.
-     */
-    ["amd"]
-    void connectBridgedSessions(string operationId, Session* sessionToReplace, Session* bridgedSession)
-       throws SourceTerminatedPreBridgingException, BridgingException, NotBridged ;
+        /**
+         * Replace one session in a Bridge with sessions from another bridge.
+         * No routing is actually performed. This operation exists here for consistency,
+         * since connectBridgedSessionsWithDestination(...) is implemented by this interface.
+         *
+         * @param operationId Unique id for this operation.
+         *
+         * @param sessionToReplace The session that is to be replaced in a
+         *   bridge. The bridge obejct associated with this session will survive, and
+         *   all sessions bridged to this session will be kept in the bridge.
+         *
+         * @param bridgedSession This session is assumed to be bridged to the sessions
+         *   that are to be moved to another bridge. The bridgedSession itself will not
+         *   be connected to the other bridge. The sessions being moved will be removed from
+         *   their current bridge before being added to the bridge currenltly attached to
+         *   sessionToReplace.
+         *
+         * @throws SourceTerminatedPreBridgingException if the source session was terminated early.
+         *
+         * @throws BridgingException if the bridge could not be setup properly.
+         *
+         * @throws NotBridged if the session provided in sessionToReplace is not currently in a bridge.
+         */
+        ["amd"]
+        void connectBridgedSessions(string operationId, Session* sessionToReplace, Session* bridgedSession)
+           throws SourceTerminatedPreBridgingException, BridgingException, NotBridged ;
     };
 
     /**
@@ -550,27 +550,27 @@ module V1
      */
     interface SessionEndpoint extends AsteriskSCF::Core::Endpoint::V1::BaseEndpoint
     {
-    /**
-     * Creates a session for the specified destination, optionally registering
-     * a SessionListener object for notification of changes to the session.
-     *
-     * @param destination A stringified identifier or address for the destination.
-     *
-     * @param callback A SessionListener object to be registered as a listener on the
-     *    newly created session. May be a nil reference if an initial listener is not
-     *    required.
-     *
-     * @return A newly created session object for the destination.
-     *
-     */
-    Session* createSession(string destination, SessionListener* callback);
+        /**
+         * Creates a session for the specified destination, optionally registering
+         * a SessionListener object for notification of changes to the session.
+         *
+         * @param destination A stringified identifier or address for the destination.
+         *
+         * @param callback A SessionListener object to be registered as a listener on the
+         *    newly created session. May be a nil reference if an initial listener is not
+         *    required.
+         *
+         * @return A newly created session object for the destination.
+         *
+         */
+        Session* createSession(string destination, SessionListener* callback);
 
-    /**
-     * Returns the active sessions for this session endpoint.
-     *
-     * @return a sequence of Session proxies.
-     */
-    idempotent SessionSeq getSessions();
+        /**
+         * Returns the active sessions for this session endpoint.
+         *
+         * @return a sequence of Session proxies.
+         */
+        idempotent SessionSeq getSessions();
     };
 
     /**
@@ -586,7 +586,7 @@ module V1
      */
     exception InvalidSessions
     {
-    Ice::LongSeq indexes;
+        Ice::LongSeq indexes;
     };
 
     /**
@@ -599,7 +599,7 @@ module V1
      * When such an exception occurs, it can be assumed that the operation succeeded for any session proxy that is in
      * the SessionErrorSeq.
      *
-     **/
+     */
     struct SessionError
     {
         Session* failedSession;
@@ -614,7 +614,7 @@ module V1
     /**
      * The bridge throws SessionNotFound exception if a specified session is
      * not currently on the bridge.
-     **/
+     */
     exception SessionNotFound
     {
         Session* missingSession;
@@ -632,87 +632,86 @@ module V1
     interface Bridge
     {
        /**
-
-	* Add a sequence of session proxies to the bridge. Sessions are started
-	* if necessary.
-	*
-	* @param session A sequence of session proxies.
-	*
-	* @throws InvalidSessions if any of the provided sessions are invalid.
-	*
-	* @see Session
-	* @see InvalidSessions
-	*/
+        * Add a sequence of session proxies to the bridge. Sessions are started
+        * if necessary.
+        *
+        * @param session A sequence of session proxies.
+        *
+        * @throws InvalidSessions if any of the provided sessions are invalid.
+        *
+        * @see Session
+        * @see InvalidSessions
+        */
        ["amd"]
        void addSessions(SessionSeq session)
        throws InvalidSessions, BridgeSessionOperationFailed;
 
        /**
-    * Abruptly destroy the bridge. Sessions will not be stopped.
-    */
+        * Abruptly destroy the bridge. Sessions will not be stopped.
+        */
        void destroy();
 
        /**
-    * List the sessions currently on the bridge.
-    *
-    * @return a sequence of session proxies participating in the bridge.
-    */
+        * List the sessions currently on the bridge.
+        *
+        * @return a sequence of session proxies participating in the bridge.
+        */
        idempotent SessionSeq listSessions();
 
        /**
-	* Removes one or more sessions from the bridge. Sessions are not stopped
-	* as they are removed.
-	*
-	* @param sessions A sequence of session proxies.
-	*
-	* @throws InvalidSessions if any of the provided sessions are invalid.
-	*
-	* @see Session
-	* @see InvalidSessions
-	*/
+        * Removes one or more sessions from the bridge. Sessions are not stopped
+        * as they are removed.
+        *
+        * @param sessions A sequence of session proxies.
+        *
+        * @throws InvalidSessions if any of the provided sessions are invalid.
+        *
+        * @see Session
+        * @see InvalidSessions
+        */
         ["amd"]
        void removeSessions(SessionSeq sessions)
         throws InvalidSessions, BridgeSessionOperationFailed;
 
        /**
-    * Nicely shutdown the bridge. Participating sessions are disconnected.
-    */
+        * Nicely shutdown the bridge. Participating sessions are disconnected.
+        */
        void shutdown();
 
        /**
-    * Adds a listener object to the bridge. The listener will receive notification
-    * of future changes to the bridge as they occur.
-    *
-    * @param listener A reference to a BridgeListener object.
-    *
-    * @see BridgeListener
-    */
+        * Adds a listener object to the bridge. The listener will receive notification
+        * of future changes to the bridge as they occur.
+        *
+        * @param listener A reference to a BridgeListener object.
+        *
+        * @see BridgeListener
+        */
        void addListener(BridgeListener* listener);
 
        /**
-    * Removes a listener object from the bridge. The listen will cease receiving
-    * notifications of changes to the bridge.
-    *
-    * @param listener A reference to the listener object to be removed.
-    *
-    * @see BridgeListener
-    */
+        * Removes a listener object from the bridge. The listen will cease receiving
+        * notifications of changes to the bridge.
+        *
+        * @param listener A reference to the listener object to be removed.
+        *
+        * @see BridgeListener
+        */
        void removeListener(BridgeListener* listener);
 
        /**
-	* Replaces a session that is on the bridge with another session. Useful for transfers, etc.
-	* where a participant is replaced as part of the code flow.
-	*
-	* @param sessionToReplace The session being replaced. The bridge associated with this
-	*   session is used for the newSessions.
-	*
-	* @param newSessions The sessions to add to the bridge. The sessions are assumed to not
-	*   be already participating in another bridge.
-	*
-	* @throws InvalidSessions if any of the provided sessions are invalid.
+        * Replaces a session that is on the bridge with another session. Useful for transfers, etc.
+        * where a participant is replaced as part of the code flow.
+        *
+        * @param sessionToReplace The session being replaced. The bridge associated with this
+        *   session is used for the newSessions.
+        *
+        * @param newSessions The sessions to add to the bridge. The sessions are assumed to not
+        *   be already participating in another bridge.
+        *
+        * @throws InvalidSessions if any of the provided sessions are invalid.
         *
         * @throws SessionNotFound if the session to be replaced is not on the bridge.
-	*/
+        */
        ["amd"]
        void replaceSession(Session* sessionToReplace, SessionSeq newSessions)
            throws InvalidSessions, SessionNotFound, BridgeSessionOperationFailed;
@@ -728,36 +727,36 @@ module V1
     interface BridgeListener
     {
        /**
-    * Called when sessions have been added to a bridge.
-    *
-    * @param sessionBridge The bridge object the sessions were added to.
-    *
-    * @param sessions A sequence of session proxies that were added to the bridge.
-    */
+        * Called when sessions have been added to a bridge.
+        *
+        * @param sessionBridge The bridge object the sessions were added to.
+        *
+        * @param sessions A sequence of session proxies that were added to the bridge.
+        */
        void sessionsAdded(Bridge* sessionBridge, SessionSeq sessions);
 
        /**
-    * Called when sessions have been removed from a bridge.
-    *
-    * @param sessionBridge The bridge object the sessions were removed from.
-    *
-    * @param sessions A sequence of session proxies that were removed from
-    * the bridge.
-    */
+        * Called when sessions have been removed from a bridge.
+        *
+        * @param sessionBridge The bridge object the sessions were removed from.
+        *
+        * @param sessions A sequence of session proxies that were removed from
+        * the bridge.
+        */
        void sessionsRemoved(Bridge* sessionBridge, SessionSeq sessions);
 
        /**
-    * Called when a bridge has completed shutdown/destruction.
-    *
-    * @param sessionBridge The bridge that was stopped.
-    */
+        * Called when a bridge has completed shutdown/destruction.
+        *
+        * @param sessionBridge The bridge that was stopped.
+        */
        void stopped(Bridge* sessionBridge);
 
        /**
-    * Called when a bridge has started shutdown/destruction operations.
-    *
-    * @param sessionBrdige The bridge that is stopping.
-    */
+        * Called when a bridge has started shutdown/destruction operations.
+        *
+        * @param sessionBrdige The bridge that is stopping.
+        */
        void stopping(Bridge* sessionBridge);
     };
 
@@ -777,66 +776,66 @@ module V1
     interface BridgeManager
     {
        /**
-    * Method called to add a listener to the bridge manager.
-    *
-    * @param listener A proxy to the bridge manager listener to add.
-    */
-    void addListener(BridgeManagerListener* listener);
-
-	/**
-	 * Method called to create a bridge.
-	 *
-	 * @param sessions A sequence of session proxies to be placed into the newly created bridge.
-	 *
-	 * @param listener A proxy to a bridge listener to be added to the newly created ridge.
-	 *
-	 * @return Bridge* Returns a proxy to the newly created bridge.
-	 */
+        * Method called to add a listener to the bridge manager.
+        *
+        * @param listener A proxy to the bridge manager listener to add.
+        */
+        void addListener(BridgeManagerListener* listener);
+
+        /**
+         * Method called to create a bridge.
+         *
+         * @param sessions A sequence of session proxies to be placed into the newly created bridge.
+         *
+         * @param listener A proxy to a bridge listener to be added to the newly created ridge.
+         *
+         * @return Bridge* Returns a proxy to the newly created bridge.
+         */
         ["amd"]
-	Bridge* createBridge(SessionSeq sessions, BridgeListener* listener);
+        Bridge* createBridge(SessionSeq sessions, BridgeListener* listener);
 
-    /**
-     * Method called to remove a listener from the bridge manager.
-     *
-     * @param listener A proxy to the bridge manager listener to remove.
-     */
-    void removeListener(BridgeManagerListener* listener);
+        /**
+         * Method called to remove a listener from the bridge manager.
+         *
+         * @param listener A proxy to the bridge manager listener to remove.
+         */
+        void removeListener(BridgeManagerListener* listener);
 
        /**
         * Method called to add a listener to the list of bridge listeners that
         * will automatically be added to every bridge that is created.
-    *
-    * @param listener A proxy to the bridge listener to add.
+        *
+        * @param listener A proxy to the bridge listener to add.
         *
         * @throws NullProxyException if the listener proxy is a null proxy.
         *
-    */
+        */
         void addDefaultBridgeListener(BridgeListener* listener)
             throws AsteriskSCF::System::V1::NullProxyException;
 
        /**
         * Method called to remove a listener to the list of bridge listeners that
         * will automatically be added to every bridge that is created.
-    *
-    * @param listener A proxy to the bridge listener to remove.
+        *
+        * @param listener A proxy to the bridge listener to remove.
         *
         * @throws NullProxyException if the listener proxy is a null proxy.
         *
-    */
+        */
         void removeDefaultBridgeListener(BridgeListener* listener)
             throws AsteriskSCF::System::V1::NullProxyException;
 
-    /**
-     * Method called to get a list of bridges currently active in the bridge manager.
-     *
-     * @return BridgeSeq a sequence of proxies to the bridges that are active.
-     */
-    idempotent BridgeSeq listBridges();
+        /**
+         * Method called to get a list of bridges currently active in the bridge manager.
+         *
+         * @return BridgeSeq a sequence of proxies to the bridges that are active.
+         */
+        idempotent BridgeSeq listBridges();
 
-    /**
-     * Method called to shut down the bridge manager.
-     */
-    void shutdown();
+        /**
+         * Method called to shut down the bridge manager.
+         */
+        void shutdown();
     };
 
     /**
@@ -845,94 +844,94 @@ module V1
     interface BridgeManagerListener
     {
        /**
-    * Notice that a bridge was created.
-    *
-    * @param manager A proxy to the bridge manager that created the bridge.
-    *
-    * @param newBridge A proxy to the newly created bridge.
-    */
-    void bridgeCreated(BridgeManager* manager, Bridge* newBridge);
+        * Notice that a bridge was created.
+        *
+        * @param manager A proxy to the bridge manager that created the bridge.
+        *
+        * @param newBridge A proxy to the newly created bridge.
+        */
+        void bridgeCreated(BridgeManager* manager, Bridge* newBridge);
 
-    /**
-     * Notice that a bridge manager has stopped.
-     *
-     * @param manager The bridge manager that has stopped.
-     */
-    void stopped(BridgeManager* manager);
+        /**
+         * Notice that a bridge manager has stopped.
+         *
+         * @param manager The bridge manager that has stopped.
+         */
+        void stopped(BridgeManager* manager);
 
-    /**
-     * Notice that a bridge manager is stopping.
-     *
-     * @param manager The bridge manager that is stopping.
-     */
-    void stopping(BridgeManager* manager);
+        /**
+         * Notice that a bridge manager is stopping.
+         *
+         * @param manager The bridge manager that is stopping.
+         */
+        void stopping(BridgeManager* manager);
     };
 
     module Event
     {
        /**
-    * String name of the IceStorm topic used for session router related events.
-    */
+        * String name of the IceStorm topic used for session router related events.
+        */
        const string TopicId = "::asteriskscf::session::sessionrouter::event";
 
        /**
-    * An enum for whether the result of an operation was successful or not
-    */
+        * An enum for whether the result of an operation was successful or not
+        */
        enum OperationResult
        {
-      SUCCESS,
-      FAILURE
+          SUCCESS,
+          FAILURE
        };
 
        /**
-    * Interface for monitoring session router events.
-    */
+        * Interface for monitoring session router events.
+        */
        interface SessionRouterEvents
        {
-      /**
-       * Notice that routeSession operation was called.
-       *
-       * @param operationId Unique id for this operation.
-       *
-       * @param source The initiating session.
-       *
-       * @param destination The identifier for the destination.
-       *
-       * @param result Operation outcome.
-       */
-      void routeSessionEvent(string operationId, Session* source, string destination, OperationResult result);
-
-      /**
-       * Notice that connectBridgedSessionsWithDestinationEvent operation was called.
-       *
-       * @param operationId Unique id for this operation.
-       *
-       * @param sessionToReplace The session that is to be replaced in the
-       *   bridge. The bridge obejct is obtained from the accessor on this
-       *   proxy.
-       *
-       * @param destination The identifier for the destination.
-       *
-       * @param result Operation outcome.
-       */
-      void connectBridgedSessionsWithDestinationEvent(string operationId, Session* sessionToReplace, string destination, OperationResult result);
-
-      /**
-       * Notice that connectBridgedSessionsEvent operation was called.
-       *
-       * @param operationId Unique id for this operation.
-       *
-       * @param sessionToReplace The session that is to be replaced in the
-       *   bridge. The bridge obejct is obtained from the accessor on this
-       *   proxy.
-       *
-       * @param bridgedSession This session is assumed to be bridged to the sessions
-       *   that are to be moved to another bridge. The bridgedSession itself will not
-       *   be connected to the other bridge.
-       *
-       * @param result Operation outcome.
-       */
-      void connectBridgedSessionsEvent(string operationId, Session* sessionToReplace, Session* bridgedSession, OperationResult result);
+          /**
+           * Notice that routeSession operation was called.
+           *
+           * @param operationId Unique id for this operation.
+           *
+           * @param source The initiating session.
+           *
+           * @param destination The identifier for the destination.
+           *
+           * @param result Operation outcome.
+           */
+          void routeSessionEvent(string operationId, Session* source, string destination, OperationResult result);
+
+          /**
+           * Notice that connectBridgedSessionsWithDestinationEvent operation was called.
+           *
+           * @param operationId Unique id for this operation.
+           *
+           * @param sessionToReplace The session that is to be replaced in the
+           *   bridge. The bridge obejct is obtained from the accessor on this
+           *   proxy.
+           *
+           * @param destination The identifier for the destination.
+           *
+           * @param result Operation outcome.
+           */
+          void connectBridgedSessionsWithDestinationEvent(string operationId, Session* sessionToReplace, string destination, OperationResult result);
+
+          /**
+           * Notice that connectBridgedSessionsEvent operation was called.
+           *
+           * @param operationId Unique id for this operation.
+           *
+           * @param sessionToReplace The session that is to be replaced in the
+           *   bridge. The bridge obejct is obtained from the accessor on this
+           *   proxy.
+           *
+           * @param bridgedSession This session is assumed to be bridged to the sessions
+           *   that are to be moved to another bridge. The bridgedSession itself will not
+           *   be connected to the other bridge.
+           *
+           * @param result Operation outcome.
+           */
+          void connectBridgedSessionsEvent(string operationId, Session* sessionToReplace, Session* bridgedSession, OperationResult result);
        };
 
     }; /* End of module Event */

commit ccba171dd9b6cd467b04327304d9ca4d28fafd09
Author: Mark Michelson <mmichelson at digium.com>
Date:   Mon Apr 25 15:53:16 2011 -0500

    Change the WorkNotFound exception to a WorkInProgress exception.
    
    It was decided that trying to cancel nonexistent work is not really
    exceptional. However, trying to cancel work that is not cancellable
    due to its being suspended or executing is a different matter, so
    the SuspendableQueue can throw the WorkInProgress exception now.

diff --git a/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice b/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice
index f09ad14..d4ad1a3 100644
--- a/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice
+++ b/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice
@@ -76,9 +76,9 @@ module V1
 
     /**
      * Exception thrown when attempting to cancel a work item that is
-     * not in a Queue or SuspendableQueue
+     * currently executing in a SuspendableQueue;
      */
-    local exception WorkNotFound
+    local exception WorkInProgress
     {
     };
 
@@ -110,14 +110,13 @@ module V1
          * Cancel a previously queued work item.
          *
          * Searches the queue for the specified work item. If found,
-         * the item is removed, otherwise WorkNotFound is thrown. Note
-         * that if multiple copies of a Work item are in the queue, only
-         * the frontmost one will be removed as a result of this method
-         * call.
+         * the item is removed. Note that if multiple copies of a Work
+         * item are in the queue, only the frontmost one will be removed
+         * as a result of this method call.
          *
          * @param item The item to be canceled
          */
-       	void cancelWork(Work item) throws WorkNotFound;
+       	void cancelWork(Work item);
 
         /**
          * Pop the front item from the queue and call its execute() method
@@ -225,14 +224,15 @@ module V1
          * Cancel a previously queued SuspendableWork item.
          *
          * Searches the queue for the specified work item. If found,
-         * the item is removed, otherwise WorkNotFound is thrown. Note
+         * the item is removed. If the item to be removed is currently in
+         * progress or suspended, then WorkInProgress is thrown. Note
          * that if multiple copies of a SuspendableWork item are in the
          * queue, only the frontmost one will be removed as a result of
          * this method call.
          *
          * @param item The item to be canceled
          */
-       	void cancelWork(SuspendableWork item) throws WorkNotFound;
+       	void cancelWork(SuspendableWork item) throws WorkInProgress;
        
         /**
          * Pop the front item from the queue and call its execute() method

commit e130133ce7fd9249e0df85d98d3885d02a49a8c5
Author: Mark Michelson <mmichelson at digium.com>
Date:   Wed Apr 20 14:06:03 2011 -0500

    Fix spacing in ConfigurationIf.ice
    
    It was just bugging me too much.

diff --git a/AsteriskSCF/System/Component/ConfigurationIf.ice b/AsteriskSCF/System/Component/ConfigurationIf.ice
index 1fed82f..4537fea 100644
--- a/AsteriskSCF/System/Component/ConfigurationIf.ice
+++ b/AsteriskSCF/System/Component/ConfigurationIf.ice
@@ -43,18 +43,18 @@ module V1
    ["visitor:ConfigurationItemVisitor"]
     class ConfigurationItem
     {
-	/**
-	 * Serial number of the configuration item. This number should be incremented each
-	 * time an update is sent to the setConfiguration method on the Configuration interface.
-	 *
-	 * If the serial number is older than is currently presently on the configured item then
-	 * an exception will be thrown indicating that the configured item has already been changed
-	 * from another source.
-	 *
-	 * The serial number check can be disabled by passing a serial number of -1. This will force
-	 * the update to proceed no matter what.
-	 */
-	int serialNumber;
+        /**
+         * Serial number of the configuration item. This number should be incremented each
+         * time an update is sent to the setConfiguration method on the Configuration interface.
+         *
+         * If the serial number is older than is currently presently on the configured item then
+         * an exception will be thrown indicating that the configured item has already been changed
+         * from another source.
+         *
+         * The serial number check can be disabled by passing a serial number of -1. This will force
+         * the update to proceed no matter what.
+         */
+        int serialNumber;
     };
 
     /**
@@ -78,10 +78,10 @@ module V1
     ["visitor:ConfigurationGroupVisitor"]
     class ConfigurationGroup
     {
-	/**
-	 * Dictionary of configuration items for this group.
-	 */
-	ConfigurationItemDict configurationItems;
+        /**
+         * Dictionary of configuration items for this group.
+         */
+        ConfigurationItemDict configurationItems;
     };
 
     /**
@@ -94,16 +94,16 @@ module V1
      */
     exception SerialConflict
     {
-	/**
-	 * The configuration group that the item belongs to. This includes all configuration items so that
-	 * they can all be updated and retried.
-	 */
-	ConfigurationGroup group;
-
-	/**
-	 * The configuration item that the serial conflict applies to.
-	 */
-	ConfigurationItem item;
+        /**
+         * The configuration group that the item belongs to. This includes all configuration items so that
+         * they can all be updated and retried.
+         */
+        ConfigurationGroup group;
+
+        /**
+         * The configuration item that the serial conflict applies to.
+         */
+        ConfigurationItem item;
     };
 
    /**
@@ -117,61 +117,61 @@ module V1
    interface ConfigurationService
    {
        /**
-	* Retrieves a sequence of configuration groups containing the configuration items specified
-	* in the ConfigurationGroup classes in the sequence itself and their current values.
-	*
-	* @param groups A sequence of group classes to be retrieved, along with the configuration items to be retrieved
-	*               in each class.
-	*
-	* @return A sequence of group classes containing the current values of the configuration items requested.
-	*
-	*/
+        * Retrieves a sequence of configuration groups containing the configuration items specified
+        * in the ConfigurationGroup classes in the sequence itself and their current values.
+        *
+        * @param groups A sequence of group classes to be retrieved, along with the configuration items to be retrieved
+        *               in each class.
+        *
+        * @return A sequence of group classes containing the current values of the configuration items requested.
+        *
+        */
        idempotent ConfigurationGroupSeq getConfiguration(ConfigurationGroupSeq groups);
 
        /**
-	* Retrieves a sequence of configuration groups containing all the configuration items and
-	* their current values.
-	*
-	* @param groups A sequence of group classes to be retrieved.
-	*
-	* @return A sequence of group classes containing the current values of the configuration items requested.
-	*
-	*/
+        * Retrieves a sequence of configuration groups containing all the configuration items and
+        * their current values.
+        *
+        * @param groups A sequence of group classes to be retrieved.
+        *
+        * @return A sequence of group classes containing the current values of the configuration items requested.
+        *
+        */
        idempotent ConfigurationGroupSeq getConfigurationAll(ConfigurationGroupSeq groups);
 
        /**
-	* Retrieves a sequence of current configuration groups. This does not return all the configuration items.
-	* If the configuration items are needed the getConfiguration method must be called afterwards.
-	*
-	* @return A sequence of current configuration groups.
-	*
-	*/
+        * Retrieves a sequence of current configuration groups. This does not return all the configuration items.
+        * If the configuration items are needed the getConfiguration method must be called afterwards.
+        *
+        * @return A sequence of current configuration groups.
+        *
+        */
        idempotent ConfigurationGroupSeq getConfigurationGroups();
 
        /**
-	* Update the configuration of one or more configuration groups.
-	*
-	* @param groups The groups and configuration items to update (or add).
-	*
-	* @throws SerialConflict when serial number of a configuration item is out of date.
-	*
-	*/
+        * Update the configuration of one or more configuration groups.
+        *
+        * @param groups The groups and configuration items to update (or add).
+        *
+        * @throws SerialConflict when serial number of a configuration item is out of date.
+        *
+        */
        idempotent void setConfiguration(ConfigurationGroupSeq groups) throws SerialConflict;
 
        /**
-	* Remove specific configuration items from a configuration group.
-	*
-	* @param groups The groups or configuration items to remove.
-	*
-	*/
+        * Remove specific configuration items from a configuration group.
+        *
+        * @param groups The groups or configuration items to remove.
+        *
+        */
        void removeConfigurationItems(ConfigurationGroupSeq groups);
 
        /**
-	* Remove a configuration group and all configuration items.
-	*
-	* @param groups The groups or configuration items to remove.
-	*
-	*/
+        * Remove a configuration group and all configuration items.
+        *
+        * @param groups The groups or configuration items to remove.
+        *
+        */
        void removeConfigurationGroups(ConfigurationGroupSeq groups);
     };
 

commit d163c342ceaab2c54a6c9158f2835af01fd25bcc
Author: Brent Eagles <beagles at digium.com>
Date:   Tue Apr 19 09:41:13 2011 -0230

    Merging slice changes for async-bridging and bridge-replication branches.
    Adds some exceptions to allow reporting of exceptions that occurred during
    asynchronous batch operations. Also added AMD metadata to some key bridging
    operations.

diff --git a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 79cd73b..81de68d 100644
--- a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -590,6 +590,37 @@ module V1
     };
 
     /**
+     *
+     * Some operations that take a collection of sessions may be executed asynchronously and may fail in an unatomic
+     * fashion. In the event that such an operation failed, a BridgeSessionOperationFailed exception is thrown with the
+     * session proxies that experienced the failure as well as a description of the exception (most often the result of
+     * a what() call on the exception itself.
+     *
+     * When such an exception occurs, it can be assumed that the operation succeeded for any session proxy that is in
+     * the SessionErrorSeq.
+     *
+     **/
+    struct SessionError
+    {
+        Session* failedSession;
+        string message;
+    };
+    sequence<SessionError> SessionErrorSeq;
+    exception BridgeSessionOperationFailed
+    {
+        SessionErrorSeq failures;
+    };
+
+    /**
+     * The bridge throws SessionNotFound exception if a specified session is
+     * not currently on the bridge.
+     **/
+    exception SessionNotFound
+    {
+        Session* missingSession;
+    };
+
+    /**
      * Forward declaration for the BridgeListener interface.
      */
     interface BridgeListener;
@@ -601,18 +632,20 @@ module V1
     interface Bridge
     {
        /**
-    * Add a sequence of session proxies to the bridge. Sessions are started
-    * if necessary.
-    *
-    * @param session A sequence of session proxies.
-    *
-    * @throws InvalidSessions if any of the provided sessions are invalid.
-    *
-    * @see Session
-    * @see InvalidSessions
-    */
+
+	* Add a sequence of session proxies to the bridge. Sessions are started
+	* if necessary.
+	*
+	* @param session A sequence of session proxies.
+	*
+	* @throws InvalidSessions if any of the provided sessions are invalid.
+	*
+	* @see Session
+	* @see InvalidSessions
+	*/
+       ["amd"]
        void addSessions(SessionSeq session)
-      throws InvalidSessions;
+       throws InvalidSessions, BridgeSessionOperationFailed;
 
        /**
     * Abruptly destroy the bridge. Sessions will not be stopped.
@@ -627,18 +660,19 @@ module V1
        idempotent SessionSeq listSessions();
 
        /**
-    * Removes one or more sessions from the bridge. Sessions are not stopped
-    * as they are removed.
-    *
-    * @param sessions A sequence of session proxies.
-    *
-    * @throws InvalidSessions if any of the provided sessions are invalid.
-    *
-    * @see Session
-    * @see InvalidSessions
-    */
+	* Removes one or more sessions from the bridge. Sessions are not stopped
+	* as they are removed.
+	*
+	* @param sessions A sequence of session proxies.
+	*
+	* @throws InvalidSessions if any of the provided sessions are invalid.
+	*
+	* @see Session
+	* @see InvalidSessions
+	*/
+        ["amd"]
        void removeSessions(SessionSeq sessions)
-      throws InvalidSessions;
+        throws InvalidSessions, BridgeSessionOperationFailed;
 
        /**
     * Nicely shutdown the bridge. Participating sessions are disconnected.
@@ -666,19 +700,22 @@ module V1
        void removeListener(BridgeListener* listener);
 
        /**
-    * Replaces a session that is on the bridge with another session. Useful for transfers, etc.
-    * where a participant is replaced as part of the code flow.
-    *
-    * @param sessionToReplace The session being replaced. The bridge associated with this
-    *   session is used for the newSessions.
-    *
-    * @param newSessions The sessions to add to the bridge. The sessions are assumed to not
-    *   be already participating in another bridge.
-    *
-    * @throws InvalidSessions if any of the provided sessions are invalid.
-    */
+	* Replaces a session that is on the bridge with another session. Useful for transfers, etc.
+	* where a participant is replaced as part of the code flow.
+	*
+	* @param sessionToReplace The session being replaced. The bridge associated with this
+	*   session is used for the newSessions.
+	*
+	* @param newSessions The sessions to add to the bridge. The sessions are assumed to not
+	*   be already participating in another bridge.
+	*
+	* @throws InvalidSessions if any of the provided sessions are invalid.
+        *
+        * @throws SessionNotFound if the session to be replaced is not on the bridge.
+	*/
+       ["amd"]
        void replaceSession(Session* sessionToReplace, SessionSeq newSessions)
-      throws InvalidSessions;
+           throws InvalidSessions, SessionNotFound, BridgeSessionOperationFailed;
     };
 
     /**
@@ -746,16 +783,17 @@ module V1
     */
     void addListener(BridgeManagerListener* listener);
 
-    /**
-     * Method called to create a bridge.
-     *
-     * @param sessions A sequence of session proxies to be placed into the newly created bridge.
-     *
-     * @param listener A proxy to a bridge listener to be added to the newly created ridge.
-     *
-     * @return Bridge* Returns a proxy to the newly created bridge.
-     */
-    Bridge* createBridge(SessionSeq sessions, BridgeListener* listener);
+	/**
+	 * Method called to create a bridge.
+	 *
+	 * @param sessions A sequence of session proxies to be placed into the newly created bridge.
+	 *
+	 * @param listener A proxy to a bridge listener to be added to the newly created ridge.
+	 *
+	 * @return Bridge* Returns a proxy to the newly created bridge.
+	 */
+        ["amd"]
+	Bridge* createBridge(SessionSeq sessions, BridgeListener* listener);
 
     /**
      * Method called to remove a listener from the bridge manager.

commit f5c64eb007d3a93c8a00d1bf9774f92ced86d6ce
Author: Mark Michelson <mmichelson at digium.com>
Date:   Fri Apr 8 16:55:02 2011 -0500

    Add a new parameter to QueueListener for number of items added to the queue.

diff --git a/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice b/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice
index 21df756..f09ad14 100644
--- a/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice
+++ b/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice
@@ -39,10 +39,11 @@ module V1
         /**
          * Indicates work has been added to the Queue or SuspendableQueue
          *
+         * @param numNewWork The number of items of Work added to the queue
          * @param wasEmpty True if the queue was empty prior
          * to the addition of the work. False otherwise.
          */
-        void workAdded(bool wasEmpty);
+        void workAdded(int numNewWork, bool wasEmpty);
 
         /**
          * Indicates that suspended work may be resumed

commit 18851c74362342d5b24094f8303a2c857d76b7a2
Author: Mark Michelson <mmichelson at digium.com>
Date:   Thu Apr 7 22:14:05 2011 -0500

    Add some documentation to thread pool and work queue interfaces.

diff --git a/AsteriskSCF/System/ThreadPool/ThreadPoolIf.ice b/AsteriskSCF/System/ThreadPool/ThreadPoolIf.ice
index ea40393..c3e9c9f 100644
--- a/AsteriskSCF/System/ThreadPool/ThreadPoolIf.ice
+++ b/AsteriskSCF/System/ThreadPool/ThreadPoolIf.ice
@@ -30,21 +30,86 @@ module ThreadPool
 module V1
 {
 
+    /**
+     * A thread pool
+     *
+     * The Pool maintains a Queue of Work to execute. Users of the
+     * Pool feed it Work by adding to this Queue directly.
+     */
     local interface Pool
     {
+        /**
+         * Set the number of threads in the Pool
+         *
+         * This method may be used to either add or
+         * remove threads from the pool.
+         *
+         * @param size The number of threads for the pool to be
+         * resized to.
+         */
         void setSize(int size);
+
+        /**
+         * Get a handle to the Pool's Queue
+         *
+         * @return The Pool's Queue
+         */
         AsteriskSCF::System::WorkQueue::V1::Queue getQueue();
     };
 
+    /**
+     * Listener for events from a Pool
+     * 
+     * All methods include as a parameter a handle to the Pool
+     * in case the listener wishes to alter the Pool as a result
+     * of the reported event.
+     */
     local interface PoolListener
     {
+        /**
+         * Indicates that the state of one or more of the Pool's threads has changed
+         *
+         * @param tpool A handle to the Pool
+         * @param activeThreads The number of active threads. Active threads are those
+         * that are currently executing work.
+         * @param idleThreads The number of idle threads. Idle threads are those that
+         * are currently waiting for work to be added.
+         * @param zombieThreads The number of zombie threads. Zombie threads are those
+         * that are still executing work but are marked for destruction as soon as they
+         * finish.
+         */
         void stateChanged(Pool tpool, int activeThreads, int idleThreads, int zombieThreads);
+
+        /**
+         * Indicates that the Pool's queue has had work added to it.
+         *
+         * @param tpool A handle to the Pool
+         * @param newWorkCount The number of new items added to the Queue
+         * @param wasEmpty True if the Queue was empty prior to the addition of
+         * new Work. False otherwise.
+         */
         void queueWorkAdded(Pool tpool, int newWorkCount, bool wasEmpty);
+
+        /**
+         * Indicates that the Pool's queue is empty
+         *
+         * @param tpool A handle to the Pool
+         */
         void queueEmptied(Pool tpool);
     };
     
+    /**
+     * Factory class for creating Pools
+     */
     local interface PoolFactory
     {
+        /**
+         * Creates a new Pool
+         *
+         * @param listener The PoolListener for the Pool to report events to
+         * @param wqueue The Queue for the ThreadPool to use internally
+         * @return A handle to the newly created Pool
+         */
         Pool createPool(PoolListener listener, AsteriskSCF::System::WorkQueue::V1::Queue wqueue);
     };
 
diff --git a/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice b/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice
index a14e043..21df756 100644
--- a/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice
+++ b/AsteriskSCF/System/WorkQueue/WorkQueueIf.ice
@@ -28,71 +28,241 @@ module WorkQueue
 module V1
 {
     
+    /**
+     * Receiver of event notices from a Queue or SuspendableQueue
+     *
+     * It is safe to call any Queue or SuspendableQueue operations
+     * from within these methods.
+     */
     local interface QueueListener
     {
+        /**
+         * Indicates work has been added to the Queue or SuspendableQueue
+         *
+         * @param wasEmpty True if the queue was empty prior
+         * to the addition of the work. False otherwise.
+         */
         void workAdded(bool wasEmpty);
+
+        /**
+         * Indicates that suspended work may be resumed
+         *
+         * This method is only ever called by SuspendableQueues
+         */
         void workResumable();
+
+        /**
+         * Indicates that the Queue or SuspendableQueue is now empty
+         */
         void emptied();
     };
 
+    /**
+     * An item of Work
+     *
+     * Objects derived from this interface may only be
+     * used with Queues, not SuspendableQueues.
+     */
     local interface Work
     {
+        /**
+         * Execute a task
+         */
         void execute();
     };
 
     local sequence<Work> WorkSeq;
 
+    /**
+     * Exception thrown when attempting to cancel a work item that is
+     * not in a Queue or SuspendableQueue
+     */
     local exception WorkNotFound
     {
     };
 
+    /**
+     * A standard work queue
+     *
+     * Queues maintain a thread-safe FIFO of Work
+     */
     local interface Queue
     {
+        /**
+         * Enqueue a single item of Work
+         *
+         * @param item The item of Work to enqueue
+         */
         void enqueueWork(Work item);
+
+        /**
+         * Enqueue multiple items of Work atomically
+         *
+         * The items will be added in the same order they
+         * appear in the input sequence.
+         *
+         * @param items The sequence of Work to add to the Queue.
+         */
        	void enqueueWorkSeq(WorkSeq items);
+
+        /**
+         * Cancel a previously queued work item.
+         *
+         * Searches the queue for the specified work item. If found,
+         * the item is removed, otherwise WorkNotFound is thrown. Note
+         * that if multiple copies of a Work item are in the queue, only
+         * the frontmost one will be removed as a result of this method
+         * call.
+         *
+         * @param item The item to be canceled
+         */
        	void cancelWork(Work item) throws WorkNotFound;
 
-        /* return value indicates whether queue contains more work
-       	   that can be executed immediately
-       	*/
+        /**
+         * Pop the front item from the queue and call its execute() method
+         *
+         * @retval true The queue contains more Work to be executed
+         * @retval false The queue contains no more Work objects
+         */
        	bool executeWork();
-       	/* this is a snapshot and should only be used as a hint */
+        /**
+         * Obtain a snapshot of the number of items in the Queue.
+         *
+         * Given that multiple threads may be adding and removing
+         * items from the queue, this should be taken as a hint of
+         * how many items there are rather than as gospel.
+         *
+         * @return The number of Work objects in the Queue
+         */
        	int getSize();
 
+        /**
+         * Set a new QueueListener
+         *
+         * If the Queue currently has a listener, then the new
+         * one will replace its old listener.
+         *
+         * @param listener The new QueueListener to set
+         */
         void setListener(QueueListener listener);
     };
 
+    /**
+     * The set of potential results from executing SuspendableWork
+     */
     enum SuspendableWorkResult
     {
+        /**
+         * Work has finished.
+         */
         Complete,
+        /**
+         * Work could not be completed immediately
+         */
        	Suspended
     };
 
+    /**
+     * Listens for updates from SuspendableWork objects
+     */
     local interface SuspendableWorkListener
     {
+        /**
+         * Indicates that suspended SuspendableWork may be resumed
+         */
         void workResumable();
     };
 
+    /**
+     * Work items to be used in a SuspendableQueue
+     */
     local interface SuspendableWork
     {
+        /**
+         * Executes a piece of SuspendableWork
+         *
+         * @param listener A SuspendableWorkListener to alert when the
+         * SuspendableWork may be resumed.
+         *
+         * @retval Complete The work has completed
+         * @retval Suspended The work cannot be completed at the moment
+         * The listener will be alerted when the SuspendableWork may be resumed.
+         */
         SuspendableWorkResult execute(SuspendableWorkListener listener);
     };
 
     local sequence<SuspendableWork> SuspendableWorkSeq;
 
+    /**
+     * A queue of SuspendableWork
+     *
+     * This is much like the Queue but allows for work to
+     * be suspended. This is useful for cases where an item
+     * of work makes an asynchronous RPC and does not wish to
+     * block the thread that is executing work.
+     */
     local interface SuspendableQueue
     {
+        /**
+         * Enqueue a single item of SuspendableWork
+         *
+         * @param item The item of work to enqueue
+         */
         void enqueueWork(SuspendableWork item);
+
+        /**
+         * Enqueue multiple items of SuspendableWork atomically
+         *
+         * The items will be added in the same order they
+         * appear in the input sequence.
+         *
+         * @param items The sequence of SuspendableWork to enqueue
+         */
        	void enqueueWorkSeq(SuspendableWorkSeq items);
+
+         /**
+         * Cancel a previously queued SuspendableWork item.
+         *
+         * Searches the queue for the specified work item. If found,
+         * the item is removed, otherwise WorkNotFound is thrown. Note
+         * that if multiple copies of a SuspendableWork item are in the
+         * queue, only the frontmost one will be removed as a result of
+         * this method call.
+         *
+         * @param item The item to be canceled
+         */
        	void cancelWork(SuspendableWork item) throws WorkNotFound;
        
-       	/* return value indicates whether queue contains more work
-       	   that can be executed immediately
-       	*/
+        /**
+         * Pop the front item from the queue and call its execute() method
+         *
+         * @retval true The queue contains more SuspendableWork that may
+         * be immediately executed
+         * @retval false The queue either contains no more SuspendableWork
+         * items OR the item executed returned a Suspended result.
+         */
        	bool executeWork();
-       	/* this is a snapshot and should only be used as a hint */
+
+        /**
+         * Obtain a snapshot of the number of items in the SuspendableQueue.
+         *
+         * Given that multiple threads may be adding and removing
+         * items from the queue, this should be taken as a hint of
+         * how many items there are rather than as gospel.
+         *
+         * @return The number of SuspendableWork objects in the
+         * SuspendableQueue
+         */
        	int getSize();
 
+        /**
+         * Set a new QueueListener
+         *
+         * If the SuspendableQueue currently has a listener, then the new
+         * one will replace its old listener.
+         *
+         * @param listener The new QueueListener to set
+         */
         void setListener(QueueListener listener);
     };
 

commit 7d3e6d011929188c02c0e971df5ad7e5aaa47abf
Author: Joshua Colp <jcolp at digium.com>
Date:   Thu Apr 7 11:19:40 2011 -0300

    Remove old stuff that is no longer used.

diff --git a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index 35d2b4f..79cd73b 100644
--- a/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -270,59 +270,6 @@ module V1
          * @see Indication
          */
         void indicated(Session* source, Indication event);
-
-	/**
-	 * Notification that a session has reached a known connected state.
-	 *
-	 * @param source The session the event occurred on.
-	 */
-	void connected(Session* source);
-
-	/**
-	 * Notification that a "flash" has occurred on a session.
-	 *
-	 * @param source The session the event occurred on.
-	 */
-	void flashed(Session* source);
-
-	/**
-	 * Notification that a session has entered a "held" state.
-	 *
-	 * @param source The session the event occurred on.
-	 */
-	void held(Session* source);
-
-	/**
-	 * Notification that a session is in a transitional state.
-	 *
-	 * @param source The session the event occurred on.
-	 *
-	 * @param response An code indentifying the details of the ongoing progress.
-	 */
-	void progressing(Session* source, ResponseCode response);
-
-	/**
-	 * Notification that a ring "event" has occurred.
-	 *
-	 * @param source The session the event occurred on.
-	 */
-	void ringing(Session* source);
-
-	/**
-	 * Notification that a session has completed.
-	 *
-	 * @param source The session the event occurred on.
-	 *
-	 * @param response An code describing the why the session stopped.
-	 */
-	void stopped(Session* source, ResponseCode response);
-
-	/**
-	 * Notification that a session has left the "held" state.
-	 *
-	 * @param source The session the event occurred on.
-	 */
-	void unheld(Session* source);
     };
 
     /**
@@ -369,16 +316,6 @@ module V1
         void indicate(Indication event) throws IndicationException;
 
 	/**
-	 * Method which requests that the session send a connect message.
-	 */
-	void connect();
-
-	/**
-	 * Method which requests that the session send a flash message.
-	 */
-	void flash();
-
-	/**
 	 * Method which retrieves a proxy to the endpoint object that created the current session.
 	 *
 	 * @return The endpoint object that created the current session.
@@ -407,20 +344,6 @@ module V1
 	AsteriskSCF::Media::V1::Session* getMediaSession();
 
 	/**
-	 * Sends a hold notification to the peer.
-	 */
-	void hold();
-
-	/**
-	 * Sends a progress notification to the peer
-	 *
-	 * @param response A code detailing the current progress.
-	 *
-	 * @see ResponseCode
-	 */
-	void progress(ResponseCode response);
-
-	/**
 	 * Removes a listener from the current list. Once removed, a listener
 	 * no longer is notified of changes to the session.
 	 *
@@ -429,11 +352,6 @@ module V1
 	void removeListener(SessionListener* listener);
 
 	/**
-	 * Send a ring notification to the peer.
-	 */
-	void ring();
-
-	/**
 	 * Start a session dialogue with a peer.
 	 */
 	void start();
@@ -447,11 +365,6 @@ module V1
 	void stop(ResponseCode response);
... 1695 lines suppressed ...


-- 
asterisk-scf/integration/slice.git



More information about the asterisk-scf-commits mailing list