[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
Tue May 8 17:29:41 CDT 2012


branch "master" has been updated
       via  af7ce795989a052e9cfe7d8ed4708d61fdd40656 (commit)
      from  68b207aeb191cd49674450b2238d8bc797e32c10 (commit)

Summary of changes:
 .../Core/Discovery/ServiceLocatorEventsIf.ice      |   32 ++-
 .../Core/Discovery/ServiceLocatorIf.ice            |   47 ++-
 slice/AsteriskSCF/Core/Routing/RoutingIf.ice       |  146 ++++---
 slice/AsteriskSCF/Media/MediaExtractionIf.ice      |   11 +-
 slice/AsteriskSCF/Media/MediaIf.ice                |   43 ++-
 slice/AsteriskSCF/Media/MediaInjectionIf.ice       |   10 +-
 slice/AsteriskSCF/Media/MediaOperationIf.ice       |   14 +-
 slice/AsteriskSCF/Media/NetworkIf.ice              |    7 +-
 slice/AsteriskSCF/Media/RTP/MediaRTCPIf.ice        |   39 ++-
 slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice         |   45 ++-
 slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice         |    8 +-
 slice/AsteriskSCF/Media/UDPTL/MediaUDPTLIf.ice     |   16 +-
 slice/AsteriskSCF/Presence/PresenceIf.ice          |   22 +-
 slice/AsteriskSCF/SIP/SIPExtensionPointIf.ice      |   20 +-
 slice/AsteriskSCF/SIP/SIPRegistrarIf.ice           |   27 +-
 .../SessionCommunicationsExtensionPointsIf.ice     |   85 +++-
 .../SessionCommunicationsIf.ice                    |  423 ++++++++++++++------
 .../SessionCommunications/TelephonyEventsIf.ice    |   33 ++-
 .../System/Component/ComponentServiceIf.ice        |   37 ++-
 .../System/Component/ConfigurationIf.ice           |   23 +-
 slice/AsteriskSCF/System/Component/ReplicaIf.ice   |   31 +-
 slice/AsteriskSCF/System/Logger/LoggerIf.ice       |    7 +-
 slice/AsteriskSCF/System/NAT/NATTraversalIf.ice    |   10 +-
 slice/AsteriskSCF/System/OperationsIf.ice          |   67 +++
 24 files changed, 889 insertions(+), 314 deletions(-)
 create mode 100644 slice/AsteriskSCF/System/OperationsIf.ice


- Log -----------------------------------------------------------------
commit af7ce795989a052e9cfe7d8ed4708d61fdd40656
Author: Ken Hunt <ken.hunt at digium.com>
Date:   Tue May 8 12:10:22 2012 -0500

    Changes for new retry logic.

diff --git a/slice/AsteriskSCF/Core/Discovery/ServiceLocatorEventsIf.ice b/slice/AsteriskSCF/Core/Discovery/ServiceLocatorEventsIf.ice
index 53fd522..ef49389 100644
--- a/slice/AsteriskSCF/Core/Discovery/ServiceLocatorEventsIf.ice
+++ b/slice/AsteriskSCF/Core/Discovery/ServiceLocatorEventsIf.ice
@@ -16,6 +16,8 @@
 
 #pragma once
 
+#include <AsteriskSCF/System/OperationsIf.ice>
+
 module AsteriskSCF
 {
 
@@ -38,44 +40,62 @@ module Discovery
       /**
        * Method which is called when a comparator is registered.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param guid The unique identifier of the comparator.
        */
-      void comparisonRegistered(string guid);
+      idempotent void comparisonRegistered(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string guid);
 
       /**
        * Method which is called when a comparator is unregistered.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param guid The unique identifier of the comparator.
        */
-      void comparisonUnregistered(string guid);
+      idempotent void comparisonUnregistered(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string guid);
 
       /**
        * Method which is called when a service is registered.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param guid The unique identifier of the service.
        */
-      void serviceRegistered(string guid);
+      idempotent void serviceRegistered(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string guid);
 
       /**
        * Method which is called when a service is unregistered.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param guid The unique identifier of the service.
        */
-      void serviceUnregistered(string guid);
+      idempotent void serviceUnregistered(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string guid);
 
       /**
        * Method which is called when a service is suspended.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param guid The unique identifier of the service.
        */
-      void serviceSuspended(string guid);
+      idempotent void serviceSuspended(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string guid);
 
       /**
        * Method which is called when a service is unsuspended.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param guid The unique identifier of the service.
        */
-      void serviceUnsuspended(string guid);
+      idempotent void serviceUnsuspended(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string guid);
    };
 
 }; /*  end module Discovery */
diff --git a/slice/AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice b/slice/AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice
index 447f5a6..bb9607d 100644
--- a/slice/AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice
+++ b/slice/AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice
@@ -17,6 +17,7 @@
 #pragma once
 
 #include <Ice/BuiltinSequences.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -164,41 +165,46 @@ module V1
       /**
        * Method which adds supported discovery parameters to a registered service.
        *
+       * @param operationContext Provides unique context for each call to this operation.
+       *
        * @param params A concrete class containing parameters describing what is supported.
        *
        * @param compareguid The unique identifier of a comparator which can perform a lower level
        *              comparison to determine whether supplied parameters in a locator request
        *              are truly supported or not. This is optional.
        */
-      void addLocatorParams(ServiceLocatorParams params, string compareguid);
+      idempotent void addLocatorParams(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          ServiceLocatorParams params, 
+          string compareguid);
 
       /**
        * Gets the status of this registered service.
        */
       ["cpp:const"]
-      ServiceStatus getStatus();
+      idempotent ServiceStatus getStatus();
 
       /**
        * Method which suspends this service from being considered when a locator request
        * is performed.
        */
-      void suspend();
+      idempotent void suspend(AsteriskSCF::System::V1::OperationContext operationContext);
 
       /**
        * Method which unsuspends this service. Once this method is called the service will
        * be able to found again when a locator request is performed.
        */
-      void unsuspend();
+      idempotent void unsuspend(AsteriskSCF::System::V1::OperationContext operationContext);
 
       /**
        * Method which unregisters this service from the service locator.
        */
-      void unregister();
+      idempotent void unregister(AsteriskSCF::System::V1::OperationContext operationContext);
 
-       /**
-        * Returns a sequence containing all ServiceLocatorParams added to this object.
-        */
-       idempotent ServiceLocatorParamsSeq getLocatorParams();
+      /**
+       * Returns a sequence containing all ServiceLocatorParams added to this object.
+       */
+      idempotent ServiceLocatorParamsSeq getLocatorParams();
    };
 
    /**
@@ -231,7 +237,7 @@ module V1
        * @return A boolean value with true meaning the parameters are supported and false if not.
        *
        */
-      bool isSupported(ServiceLocatorParams params);
+      idempotent bool isSupported(ServiceLocatorParams params);
    };
 
    /**
@@ -248,30 +254,37 @@ module V1
        *
        * @return A proxy to the service management interface for this service.
        */
-      ServiceManagement *addService(Object *service, string guid);
+      idempotent ServiceManagement *addService(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          Object *service, 
+          string guid);
 
       /**
        * Returns a list of all registered services.
        */
       ["cpp:const"]
-      ServiceInfoSeq getServices();
+      idempotent ServiceInfoSeq getServices();
 
       /**
        * Returns the registered service with the given guid.
        */
       ["cpp:const"]
-      ServiceInfo getService(string guid);
+      idempotent ServiceInfo getService(string guid);
 
       /**
        * Method which adds a comparator to the service locator.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param compareguid A unique identifier for this comparator.
-       *
        * @param compare A proxy to the comparator service.
        *
        * @throws DuplicateCompare if an existing comparator was found using the given guid.
        */
-      void addCompare(string compareguid, ServiceLocatorParamsCompare *compare) throws DuplicateCompare;
+      idempotent void addCompare(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string compareguid, 
+          ServiceLocatorParamsCompare *compare) 
+              throws DuplicateCompare;
 
       /**
        * Method which removes a comparator from the service locator.
@@ -280,7 +293,9 @@ module V1
        *
        * @throws CompareNotFound if the given comparator could not be found.
        */
-      void removeCompare(string compareguid) throws CompareNotFound;
+      idempotent void removeCompare(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string compareguid) throws CompareNotFound;
    };
 
 }; /*  end module V1 */
diff --git a/slice/AsteriskSCF/Core/Routing/RoutingIf.ice b/slice/AsteriskSCF/Core/Routing/RoutingIf.ice
index 85ab304..b70fa6b 100644
--- a/slice/AsteriskSCF/Core/Routing/RoutingIf.ice
+++ b/slice/AsteriskSCF/Core/Routing/RoutingIf.ice
@@ -16,6 +16,7 @@
 
 #pragma once
 
+#include <AsteriskSCF/System/OperationsIf.ice>
 #include <AsteriskSCF/Core/Endpoint/EndpointIf.ice>
 
 module AsteriskSCF 
@@ -118,6 +119,8 @@ module V1
       /**
        * Method which registers an EndpointLocator that can provide endpoints.
        *
+       * @param operationContext Provides unique context for each call to this operation.
+       *
        * @param id A unique identifier for the added EndpointLocator.
        *
        * @param destinationIdRangeList A set of regular expressions that define the valid endpoint ids
@@ -129,23 +132,28 @@ module V1
        *
        * @throws InvalidParamsException if any parameters are invalid.
        */
-      void addEndpointLocator(string id, RegExSeq destinationIdRangeList, EndpointLocator *locator)
-     throws LocatorAlreadyRegisteredException, InvalidParamsException;
+      idempotent void addEndpointLocator(AsteriskSCF::System::V1::OperationContext operationContext,
+         string id, RegExSeq destinationIdRangeList, EndpointLocator *locator) 
+             throws LocatorAlreadyRegisteredException, InvalidParamsException;
 
       /**
        * Method which unregisters an EndpointLocator.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param id The unique id of the locator to remove.
        *
        * @throws DestinationNotFoundException if the EndpointLocator of the given id is not registered.
        */
-      void removeEndpointLocator(string id) throws DestinationNotFoundException;
+      idempotent void removeEndpointLocator(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string id) 
+              throws DestinationNotFoundException;
 
       /**
        * Method which modifies the range of device ids managed by a previously added EndpointLocator.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param id The unique identifier for the added EndpointLocator.
-       *
        * @param A list of reqular expressions that define the the valid endpoint ids. This
        *     set of regular expressions completely replaces the current set.
        *
@@ -153,8 +161,10 @@ module V1
        *
        * @throws InvalidParamsException if any parameters are invalid.
        */
-      void setEndpointLocatorDestinationIds(string id, RegExSeq deviceIdRangeList)
-     throws DestinationNotFoundException, InvalidParamsException;
+      idempotent void setEndpointLocatorDestinationIds(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string id, RegExSeq deviceIdRangeList)
+              throws DestinationNotFoundException, InvalidParamsException;
    };
 
 
@@ -165,16 +175,19 @@ module V1
    {
       /**
        * Method which informs routing to drop references to all EndpointLocators that have been registered.
+       *
+       * @param operationContext Provides unique context for each call to this operation.
        */
-      void clearEndpointLocators();
+      idempotent void clearEndpointLocators(AsteriskSCF::System::V1::OperationContext operationContext);
 
       /**
        * Method which sends a policy string to the Lua script processor. The default implementation is a no-op,
        * but site-specific scripts may make use it.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param policy A site-specific policy specification.
        */
-      void setPolicy(string policy);
+      idempotent void setPolicy(AsteriskSCF::System::V1::OperationContext operationContext, string policy);
    };
 
    module Event
@@ -198,59 +211,70 @@ module V1
        */
       interface RoutingEvents
       {
-     /**
-      * Notification that a lookup was attempted.
-      *
-      * @param destinationId The destination being looked up.
-      *
-      * @param result Indicates whether or not the attempt was successful.
-      */
-     void lookupEvent(string destinationId, OperationResult result);
-
-     /**
-      * Notification that an attempt to add an EndpointLocator was made.
-      *
-      * @param id The identifier of the EndpointLocator being added.
-      *
-      * @param destinationIdRangeList A set of regular expressions that define the endpoints available.
-      *
-      * @param result Indicates whether or not the attempt was successful.
-      */
-     void addEndpointLocatorEvent(string id, RegExSeq destinationIdRangeList, EndpointLocator *locator, OperationResult result);
-
-     /**
-      * Notification that an attempt was made to remove an EndpointLocator.
-      *
-      * @param id The identifier of the EndpointLocator being removed.
-      *
-      * @param result Indicates whether or not the attempt was successful.
-      */
-     void removeEndpointLocatorEvent(string id, OperationResult result);
-
-     /**
-      * Notification that an attempt was made to modify the range of destinationIds
-      * accessible from a given EndpointLocator.
-      *
-      * @param id The destination being looked up.
-      *
-      * @param destinationIdRangeList A list of regular expressions to be representative of the new valid ids.
-      *
-      * @param result Indicates whether or not the attempt was successful.
-      */
-     void setEndpointLocatorDestinationIdsEvent(string id, RegExSeq destinationIdRangeList, OperationResult result);
-
-     /**
-      * Called when the EndpointLocator cache has been cleared by an administrative action.
-      */
-     void clearEndpointLocatorsEvent();
-
-     /**
-      * Called when an administration operation has set the routing service policy.
-      *
-      * @param policy The new policy.
-      */
-     void setPolicyEvent(string policy);
-      };
+         /**
+          * Notification that a lookup was attempted.
+          *
+          * @param operationContext Provides unique context for each call to this operation.
+          * @param destinationId The destination being looked up.
+          * @param result Indicates whether or not the attempt was successful.
+          */
+         idempotent void lookupEvent(
+             AsteriskSCF::System::V1::OperationContext operationContext,
+             string destinationId, OperationResult result);
+
+         /**
+          * Notification that an attempt to add an EndpointLocator was made.
+          *
+          * @param operationContext Provides unique context for each call to this operation.
+          * @param id The identifier of the EndpointLocator being added.
+          * @param destinationIdRangeList A set of regular expressions that define the endpoints available.
+          * @param result Indicates whether or not the attempt was successful.
+          */
+         idempotent void addEndpointLocatorEvent(
+             AsteriskSCF::System::V1::OperationContext operationContext,
+             string id, RegExSeq destinationIdRangeList, EndpointLocator *locator, OperationResult result);
+
+         /**
+          * Notification that an attempt was made to remove an EndpointLocator.
+          *
+          * @param operationContext Provides unique context for each call to this operation.
+          * @param id The identifier of the EndpointLocator being removed.
+          * @param result Indicates whether or not the attempt was successful.
+          */
+         idempotent void removeEndpointLocatorEvent(
+             AsteriskSCF::System::V1::OperationContext operationContext,
+             string id, OperationResult result);
+
+         /**
+          * Notification that an attempt was made to modify the range of destinationIds
+          * accessible from a given EndpointLocator.
+          *
+          * @param operationContext Provides unique context for each call to this operation.
+          * @param id The destination being looked up.
+          * @param destinationIdRangeList A list of regular expressions to be representative of the new valid ids.
+          * @param result Indicates whether or not the attempt was successful.
+          */
+         idempotent void setEndpointLocatorDestinationIdsEvent(
+             AsteriskSCF::System::V1::OperationContext operationContext,
+             string id, RegExSeq destinationIdRangeList, OperationResult result);
+
+         /**
+          * Called when the EndpointLocator cache has been cleared by an administrative action.
+          *
+          * @param operationContext Provides unique context for each call to this operation.
+          */
+         void clearEndpointLocatorsEvent(AsteriskSCF::System::V1::OperationContext operationContext);
+
+         /**
+          * Called when an administration operation has set the routing service policy.
+          *
+          * @param operationContext Provides unique context for each call to this operation.
+          * @param policy The new policy.
+          */
+         idempotent void setPolicyEvent(
+             AsteriskSCF::System::V1::OperationContext operationContext,
+             string policy);
+       };
    };
 
 }; /* module V1 */
diff --git a/slice/AsteriskSCF/Media/MediaExtractionIf.ice b/slice/AsteriskSCF/Media/MediaExtractionIf.ice
index 16b7d86..2522873 100644
--- a/slice/AsteriskSCF/Media/MediaExtractionIf.ice
+++ b/slice/AsteriskSCF/Media/MediaExtractionIf.ice
@@ -18,6 +18,7 @@
 
 #include <AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice>
 #include <AsteriskSCF/Media/MediaIf.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -108,18 +109,24 @@ module V1
         /**
          * Method used to request that media extraction occurs.
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param requests The media extraction requests.
          *
          * @return ExtractInstanceDict A dictionary of media extraction instances.
          */
-        ExtractInstanceDict startExtraction(ExtractRequestInfoDict requests);
+        ExtractInstanceDict startExtraction(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ExtractRequestInfoDict requests);
 
         /**
          * Method used to request that media extraction stop.
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param instances The media extraction instances that should stop.
          */
-        void stopExtraction(ExtractInstanceSeq instances);
+        void stopExtraction(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ExtractInstanceSeq instances);
     };
 
 }; /* end module V1 */
diff --git a/slice/AsteriskSCF/Media/MediaIf.ice b/slice/AsteriskSCF/Media/MediaIf.ice
index c945aac..4dbec41 100644
--- a/slice/AsteriskSCF/Media/MediaIf.ice
+++ b/slice/AsteriskSCF/Media/MediaIf.ice
@@ -18,6 +18,7 @@
 
 #include <Ice/BuiltinSequences.ice>
 #include <AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -136,16 +137,22 @@ module V1
         /**
          * Method used to establish direct media connections external to Asterisk SCF.
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param connections The direct connections that are to be established.
          */
-        ["amd"] void connectStreams(DirectMediaConnectionDict connections);
+        ["amd"] idempotent void connectStreams(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            DirectMediaConnectionDict connections);
 
         /**
          * Method used to tear down direct media connections.
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param streams A sequence of streams that should no longer be directly connected.
          */
-        ["amd"] void disconnectStreams(Ice::StringSeq streams);
+        ["amd"] idempotent void disconnectStreams(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            Ice::StringSeq streams);
     };
 
     /**
@@ -229,14 +236,14 @@ module V1
          *
          * @return StreamSourceSeq A sequence of stream sources.
          */
-        StreamSourceSeq getSources();
+        idempotent StreamSourceSeq getSources();
 
         /**
          * Method which returns the stream sinks that are on the session.
          *
          * @return StreamSinkSeq A sequence of stream sinks.
          */
-        StreamSinkSeq getSinks();
+        idempotent StreamSinkSeq getSinks();
 
         /**
          * Method which returns a unique identifier for the session.
@@ -254,7 +261,9 @@ module V1
          * @note  There can only be one cookie of a given type associated
          *        with a session.
          */
-        void setCookies(SessionCookies cookies);
+        idempotent void setCookies(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            SessionCookies cookies);
 
         /**
          * Remove cookies from the session.
@@ -264,7 +273,9 @@ module V1
          *        Only the concrete type of each cookie passed in is used to 
          *        determine which cookies to remove.
          */
-        void removeCookies(SessionCookies cookies);
+        idempotent void removeCookies(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            SessionCookies cookies);
 
         /**
          * Get cookies stored on the session.
@@ -276,7 +287,7 @@ module V1
          *         with types that match the types of the template cookies
          *         provided in the cookieTypes parameter.
          */
-        ["amd"] SessionCookies getCookies(SessionCookies cookieTypes);
+        ["amd"] idempotent SessionCookies getCookies(SessionCookies cookieTypes);
     };
 
     /**
@@ -304,14 +315,18 @@ module V1
          *
          * @param destination A proxy to a stream sink where media will be sent to.
          */
-        void addSink(StreamSink* destination);
+        idempotent void addSink(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            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);
+        idempotent void removeSink(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            StreamSink* destination);
 
         /**
          * Method which retrieves the current stream sinks for media.
@@ -337,11 +352,15 @@ module V1
         /**
          * Method which requests that the source change the format of frames being sent to ALL sinks.
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @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;
+        idempotent void requestFormat(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            Format newformat) throws 
+                MediaFormatSwitchException;
     };
 
     /**
@@ -368,7 +387,9 @@ module V1
          *
          * @param source A proxy to the stream source that media is being received from.
          */
-        idempotent void setSource(StreamSource* source);
+        idempotent void setSource(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            StreamSource* source);
 
         /**
          * Method which retrieves the current stream source of media.
diff --git a/slice/AsteriskSCF/Media/MediaInjectionIf.ice b/slice/AsteriskSCF/Media/MediaInjectionIf.ice
index 714e0e9..4c08794 100644
--- a/slice/AsteriskSCF/Media/MediaInjectionIf.ice
+++ b/slice/AsteriskSCF/Media/MediaInjectionIf.ice
@@ -18,6 +18,7 @@
 
 #include <AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice>
 #include <AsteriskSCF/Media/MediaIf.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -107,18 +108,23 @@ module V1
         /**
          * Method used to request that media injection occurs.
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param requests The media injection requests.
          *
          * @return InjectInstanceDict A dictionary of media injection instances.
          */
-        InjectInstanceDict startInjection(InjectRequestInfoDict requests);
+        idempotent InjectInstanceDict startInjection(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            InjectRequestInfoDict requests);
 
         /**
          * Method used to request that media injection stop.
          *
          * @param instances The media injection instances that should stop.
          */
-        void stopInjection(InjectInstanceSeq instances);
+        idempotent void stopInjection(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            InjectInstanceSeq instances);
     };
 
 }; /* end module V1 */
diff --git a/slice/AsteriskSCF/Media/MediaOperationIf.ice b/slice/AsteriskSCF/Media/MediaOperationIf.ice
index 9dfcd96..ee23ba4 100644
--- a/slice/AsteriskSCF/Media/MediaOperationIf.ice
+++ b/slice/AsteriskSCF/Media/MediaOperationIf.ice
@@ -18,6 +18,7 @@
 
 #include <AsteriskSCF/Media/MediaIf.ice>
 #include <AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -44,21 +45,24 @@ const string MediaOperationDiscoveryTranslatorService = "Translator";
 
 interface MediaOperation
 {
-    StreamSource* getSource();
-    StreamSink* getSink();
-    void destroy();
+    idempotent StreamSource* getSource();
+    idempotent StreamSink* getSink();
+    idempotent void destroy();
 };
 
 interface MediaOperationFactory
 {
     /**
      * Create a new instance of a media operation.
+     * @param operationContext Provides unique id for this request.
      * @param source optional source of media that will enter the operation
      * @param sink optional source of media that the operation will write to
      */
-    MediaOperation* createMediaOperation(
+    idempotent MediaOperation* createMediaOperation(
+            AsteriskSCF::System::V1::OperationContext operationContext,
             StreamSource* source,
-            StreamSink* sink) throws UnsupportedMediaFormatException;
+            StreamSink* sink) throws 
+                UnsupportedMediaFormatException;
 };
 
 struct MediaOperationAttributes
diff --git a/slice/AsteriskSCF/Media/NetworkIf.ice b/slice/AsteriskSCF/Media/NetworkIf.ice
index 65d686d..6e62f0a 100644
--- a/slice/AsteriskSCF/Media/NetworkIf.ice
+++ b/slice/AsteriskSCF/Media/NetworkIf.ice
@@ -16,6 +16,8 @@
 
 #pragma once
 
+#include <AsteriskSCF/System/OperationsIf.ice>
+
 module AsteriskSCF
 {
 
@@ -80,7 +82,10 @@ module V1
          *
          * @throws InvalidAddress when the address passed in is invalid.
          */
-        idempotent void setRemoteDetails(string address, int port) throws InvalidAddress;
+        idempotent void setRemoteDetails(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            string address, int port) throws 
+                InvalidAddress;
 
         /**
          * Method which returns the remote address information that we are sending to.
diff --git a/slice/AsteriskSCF/Media/RTP/MediaRTCPIf.ice b/slice/AsteriskSCF/Media/RTP/MediaRTCPIf.ice
index 5923ddf..e3ca165 100644
--- a/slice/AsteriskSCF/Media/RTP/MediaRTCPIf.ice
+++ b/slice/AsteriskSCF/Media/RTP/MediaRTCPIf.ice
@@ -15,6 +15,7 @@
  */
 
 #include <AsteriskSCF/Media/RTP/MediaRTPIf.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -127,13 +128,19 @@ module V1
         *
         * Note that this must be called before RTCP will be sent.
         *
+        * @param operationContext Provides unique context for each call to this operation.
+        *
         * @param address A string representation of the  address.
         *
         * @param port An integer containing the port.
         *
         * @throws InvalidAddress when the address passed in is invalid.
         */
-       void setRemoteDetails(string address, int port) throws AsteriskSCF::Media::RTP::V1::InvalidAddress;
+       idempotent void setRemoteDetails(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           string address, 
+           int port) throws 
+               AsteriskSCF::Media::RTP::V1::InvalidAddress;
    };
 
    /**
@@ -144,30 +151,44 @@ module V1
        /**
         * Method called when statistics information is updated for a source
         *
+        * @param operationContext Provides unique context for each call to this operation.
+        *
         * @param source The source the statistics were updated on
         *
         * @param newStatistics Updated statistics information
         */
-       void sourceStatisticsUpdated(AsteriskSCF::Media::RTP::V1::StreamSourceRTP* source, Statistics newStatistics);
+       idempotent void sourceStatisticsUpdated(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           AsteriskSCF::Media::RTP::V1::StreamSourceRTP* source, 
+           Statistics newStatistics);
 
        /**
         * Method called when statistics information is updated for a sink
         *
+        * @param operationContext Provides unique context for each call to this operation.
         *
         * @param sink The sink the statistics were updated on
         *
         * @param newStatistics Updated statistics information
         */
-       void sinkStatisticsUpdated(AsteriskSCF::Media::RTP::V1::StreamSinkRTP* sink, Statistics newStatistics);
+       void sinkStatisticsUpdated(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           AsteriskSCF::Media::RTP::V1::StreamSinkRTP* sink, 
+           Statistics newStatistics);
 
        /**
         * Method called when the SSRC changes for a source
         *
+        * @param operationContext Provides unique context for each call to this operation.
+        *
         * @param source The source that the SSRC has changed on
         *
         * @param ssrc The new SSRC value
         */
-       void sourceSsrcChanged(AsteriskSCF::Media::RTP::V1::StreamSourceRTP* source, int ssrc);
+       void sourceSsrcChanged(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           AsteriskSCF::Media::RTP::V1::StreamSourceRTP* source, 
+           int ssrc);
    };
 
    /**
@@ -195,16 +216,22 @@ module V1
        /**
         * Method used to add a listener which receives statistics information at the RTCP interval
         *
+        * @param operationContext Provides unique context for each call to this operation.
         * @param listener A proxy to the listener to add
         */
-       void addListener(InformationListener *listener);
+       idempotent void addListener(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           InformationListener *listener);
 
        /**
         * Method used to remove a listener
         *
+        * @param operationContext Provides unique context for each call to this operation.
         * @param listener A proxy to the listener to move
         */
-       void removeListener(InformationListener *listener);
+       idempotent void removeListener(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           InformationListener *listener);
    };
 
 }; /*  end module V1 */
diff --git a/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice b/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice
index 5b3584a..687837d 100644
--- a/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice
+++ b/slice/AsteriskSCF/Media/RTP/MediaRTPIf.ice
@@ -17,7 +17,7 @@
 #include <AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice>
 #include <AsteriskSCF/Media/MediaIf.ice>
 #include <AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice>
-
+#include <AsteriskSCF/System/OperationsIf.ice>
 module AsteriskSCF
 {
 
@@ -125,7 +125,10 @@ module V1
        *
        * @throws InvalidAddress when the address passed in is invalid.
        */
-      void setRemoteDetails(string address, int port) throws InvalidAddress;
+      idempotent void setRemoteDetails(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          string address, int port) throws 
+              InvalidAddress;
 
       /**
        * Method which retrieves the remote IP address.
@@ -155,14 +158,17 @@ module V1
       /**
        * Method which associates payloads and media formats.
        *
+       * @param operationContext Provides unique context for each call to this operation.
        * @param mappings The payload and media format mappings.
        */
-      void associatePayloads(PayloadMap mappings);
+      void associatePayloads(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          PayloadMap mappings);
 
       /**
        * Method which releases the RTP session. Once called the RTP session will no longer exist.
        */
-      void release();
+      idempotent void release();
    };
 
     class RTPOptions
@@ -219,6 +225,8 @@ module V1
         *
         * Set the key information for the local endpoint. 
         *
+        * @param operationContext Provides unique context for each call to this operation.
+        *
         * @param suiteName The type of crypto suite to be used.
         *
         * @param keyInfo The key for the specified crypto suite (may be empty).
@@ -230,12 +238,19 @@ module V1
         * @throws SRTPUnavailable if the SRTP functionality is unavailable at the moment, really should not happen.
         *
         */
-       void setOptions(string suiteName, string keyInfo, bool enableAuthentication, bool enableEncryption) 
-           throws SRTPUnavailable;
+       idempotent void setOptions(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           string suiteName, 
+           string keyInfo, 
+           bool enableAuthentication, 
+           bool enableEncryption) 
+               throws SRTPUnavailable;
 
        /**
         * Set the key information and initiates communication with peer.
         * 
+        * @param operationContext Provides unique context for each call to this operation.
+        *
         * @param suiteName The type of crypto suite to be used.
         *
         * @param keyInfo The key for the specified crypto suite (may be empty).
@@ -251,8 +266,13 @@ module V1
         * @throws SRTPAlreadyStarted if this is a duplicate call to start.
         *
         */
-       void start(string suiteName, string keyInfo, bool enableAuthentication, bool enableEncryption) throws
-           SRTPUnavailable, SRTPFailure, SRTPAlreadyStarted;
+       idempotent void start(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           string suiteName, 
+           string keyInfo, 
+           bool enableAuthentication, 
+           bool enableEncryption) throws
+               SRTPUnavailable, SRTPFailure, SRTPAlreadyStarted;
    };
 
    /**
@@ -272,6 +292,8 @@ module V1
       /**
        * Method which creates a new RTP session and returns a proxy to it.
        * 
+       * @param operationContext Provides unique context for each call to this operation.
+       *
        * @param params Parameters to configure the RTP session with.
        *
        * @return RTPSession* A proxy to the new RTP session.
@@ -279,7 +301,12 @@ module V1
        * @throws SessionAllocationFailure if the media service is unable to allocate a session
        * to match the provided parameters.
        */
-       RTPSession* allocate(RTPServiceLocatorParams params, RTPOptions options, out RTPAllocationOutputs outputs) throws SessionAllocationFailure;
+       idempotent RTPSession* allocate(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           RTPServiceLocatorParams params, 
+           RTPOptions options, 
+           out RTPAllocationOutputs outputs) 
+               throws SessionAllocationFailure;
    };
 
 }; /*  end module V1 */
diff --git a/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice b/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
index f6489b2..99727fb 100644
--- a/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
+++ b/slice/AsteriskSCF/Media/SDP/MediaSDPIf.ice
@@ -16,6 +16,7 @@
 
 #include <AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice>
 #include <AsteriskSCF/Media/MediaIf.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -107,8 +108,11 @@ module V1
          *
          * @return Format A concrete class containing media format details for the given format.
          */
-        idempotent AsteriskSCF::Media::V1::Format getNamedFormat(string name, int sampleRate, int frameSize,
-                                                                 Ice::StringSeq formatSpecific);
+        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.
diff --git a/slice/AsteriskSCF/Media/UDPTL/MediaUDPTLIf.ice b/slice/AsteriskSCF/Media/UDPTL/MediaUDPTLIf.ice
index e0388c3..314c7ef 100644
--- a/slice/AsteriskSCF/Media/UDPTL/MediaUDPTLIf.ice
+++ b/slice/AsteriskSCF/Media/UDPTL/MediaUDPTLIf.ice
@@ -17,6 +17,7 @@
 #include <AsteriskSCF/Core/Discovery/ServiceLocatorIf.ice>
 #include <AsteriskSCF/Media/MediaIf.ice>
 #include <AsteriskSCF/Media/NetworkIf.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -114,7 +115,9 @@ module V1
        *
        * @param datagramSize Maximum datagram size.
        */
-      idempotent void setFarMaxDatagram(int datagramSize);
+      idempotent void setFarMaxDatagram(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          int datagramSize);
 
       /**
        * Method which returns the maximum datagram size of this source.
@@ -135,7 +138,9 @@ module V1
        *
        * @param ErrorCorrectionScheme The error correction scheme to use.
        */
-      idempotent void setErrorCorrectionScheme(ErrorCorrectionScheme scheme);
+      idempotent void setErrorCorrectionScheme(
+          AsteriskSCF::System::V1::OperationContext operationContext,
+          ErrorCorrectionScheme scheme);
 
       /**
        * Method which gets the error correction scheme.
@@ -173,6 +178,8 @@ module V1
       /**
        * Method which creates a new UDPTL session and returns a proxy to it.
        * 
+       * @param operationContext Provides unique context for each call to this operation.
+       *
        * @param params Parameters to configure the UDPTL session with.
        *
        * @return UDPTLSession* A proxy to the new UDPTL session.
@@ -180,7 +187,10 @@ module V1
        * @throws SessionAllocationFailure if the media service is unable to allocate a session
        * to match the provided parameters.
        */
-       UDPTLSession* allocate(UDPTLServiceLocatorParams params) throws SessionAllocationFailure;
+       idempotent UDPTLSession* allocate(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           UDPTLServiceLocatorParams params)
+               throws SessionAllocationFailure;
    };
 
 }; /*  end module V1 */
diff --git a/slice/AsteriskSCF/Presence/PresenceIf.ice b/slice/AsteriskSCF/Presence/PresenceIf.ice
index dad6e6c..dfb69db 100644
--- a/slice/AsteriskSCF/Presence/PresenceIf.ice
+++ b/slice/AsteriskSCF/Presence/PresenceIf.ice
@@ -17,6 +17,7 @@
 #pragma once
 
 #include <Ice/BuiltinSequences.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -130,11 +131,15 @@ module V1
        /**
         * Method used to indicate that an resource has updated its status.
         *
+        * @param operationContext Provides unique context for each call to this operation.
+        *
         * @param resource Name of the resource that the status is for.
         *
         * @param newStatus Concrete class containing the status of the resource.
         */
-       void update(ResourceStatusDict newStatus);
+       void update(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           ResourceStatusDict newStatus);
    };
 
    /**
@@ -181,6 +186,8 @@ module V1
         *
         * Note that the current status for each resource will be sent to the consumer before returning.
         *
+        * @param operationContext Provides unique context for each call to this operation.
+        *
         * @param authToken Authentication token received when authenticate was called.
         *
         * @param resources A sequence of resources to subscribe to.
@@ -189,16 +196,25 @@ module V1
         *
         * @see Consumer
         */
-       void subscribe(Token authToken, Ice::StringSeq resources, Consumer *presenceConsumer);
+       idempotent void subscribe(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           Token authToken, 
+           Ice::StringSeq resources, 
+           Consumer *presenceConsumer);
 
        /**
         * Method used to unsubscribe from specific resource status updates.
         *
+        * @param operationContext Provides unique context for each call to this operation.
+        *
         * @param resources A sequence of resources that will no longer be subscribed to.
         *
         * @param presenceConsumer A proxy to the consumer that was subscribed.
         */
-       void unsubscribe(Ice::StringSeq resources, Consumer *presenceConsumer);
+       idempotent void unsubscribe(
+           AsteriskSCF::System::V1::OperationContext operationContext,
+           Ice::StringSeq resources, 
+           Consumer *presenceConsumer);
    };
 
 }; /* End of module V1 */
diff --git a/slice/AsteriskSCF/SIP/SIPExtensionPointIf.ice b/slice/AsteriskSCF/SIP/SIPExtensionPointIf.ice
index fc00dc5..6dee7fc 100644
--- a/slice/AsteriskSCF/SIP/SIPExtensionPointIf.ice
+++ b/slice/AsteriskSCF/SIP/SIPExtensionPointIf.ice
@@ -18,6 +18,7 @@
 
 #include <Ice/BuiltinSequences.ice>
 
+#include <AsteriskSCF/System/OperationsIf.ice>
 #include <AsteriskSCF/System/Hook/HookIf.ice>
 
 module AsteriskSCF
@@ -191,13 +192,14 @@ module V1
          * authentication challenge (i.e. WWW-Authenticate header) that Asterisk
          * SCF will send to the UAC
          */
-	    AsteriskSCF::System::Hook::V1::HookResult challengeRequest(RequestInfo info, out DigestChallengeSeq challenges);
+	idempotent AsteriskSCF::System::Hook::V1::HookResult challengeRequest(RequestInfo info, out DigestChallengeSeq challenges);
+
         /**
          * Called when Asterisk SCF is a UAC. This is used to formulate the
          * authentication response (i.e. Authorization header) that Asterisk
          * SCF will send to the UAS that has sent an authentication challenge
          */
-        AsteriskSCF::System::Hook::V1::HookResult respondToChallenge(string endpointName, Ice::StringSeq realms, out ClientAuthSeq auths);
+        idempotent AsteriskSCF::System::Hook::V1::HookResult respondToChallenge(string endpointName, Ice::StringSeq realms, out ClientAuthSeq auths);
     };
 
     sequence<AuthHook*> AuthHookSeq;
@@ -224,9 +226,17 @@ module V1
 
     interface AuthExtensionPoint
     {
-	void addAuthHook(AuthHook *hook, int priority, RequestTypeSeq requestTypes);
-	void removeAuthHook(AuthHook *hook);
-	void clearAuthHooks();
+	idempotent void addAuthHook(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            AuthHook *hook, 
+            int priority, 
+            RequestTypeSeq requestTypes);
+
+	idempotent void removeAuthHook(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            AuthHook *hook);
+
+	idempotent void clearAuthHooks(AsteriskSCF::System::V1::OperationContext operationContext);
     };
 
 }; /* End of module V1 */
diff --git a/slice/AsteriskSCF/SIP/SIPRegistrarIf.ice b/slice/AsteriskSCF/SIP/SIPRegistrarIf.ice
index c9ec943..5cd2b16 100644
--- a/slice/AsteriskSCF/SIP/SIPRegistrarIf.ice
+++ b/slice/AsteriskSCF/SIP/SIPRegistrarIf.ice
@@ -17,6 +17,7 @@
 #pragma once
 
 #include <Ice/BuiltinSequences.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -81,8 +82,14 @@ interface RegistrarListener
      * Alerts the listener that contacts have been added.
      * The AoR may be new or it may have previous
      * bindings.
+     *
+     * @param contacts The added contacts.
+     *
      */
-    void contactsAdded(BindingUpdateSeq contacts);
+    idempotent void contactsAdded(
+        AsteriskSCF::System::V1::OperationContext operationContext, 
+        BindingUpdateSeq contacts);
+
     /**
      * Alerts the listener that contacts have been removed.
      * There is no specific call for indicating that an AoR
@@ -90,7 +97,9 @@ interface RegistrarListener
      * method has been called, listeners should take
      * appropriate action if the AoR has no bound contacts.
      */
-     void contactsRemoved(BindingUpdateSeq contacts);
+     idempotent void contactsRemoved(
+         AsteriskSCF::System::V1::OperationContext operationContext, 
+         BindingUpdateSeq contacts);
 };
 
 /**
@@ -106,19 +115,25 @@ interface Registrar
      * The return value is the map of all AoRs and their
      * bindings.
      */
-     ["amd"] ContactDict addListener(RegistrarListener *listener);
+     ["amd"] idempotent ContactDict addListener(
+         AsteriskSCF::System::V1::OperationContext operationContext, 
+         RegistrarListener *listener);
+
      /**
       * Remove a listener.
       */
-     ["amd"] void removeListener(RegistrarListener *listener);
+     ["amd"] idempotent void removeListener(
+         AsteriskSCF::System::V1::OperationContext operationContext, 
+         RegistrarListener *listener);
+
      /**
       * Get the mapping of all active registrations.
       */
-     ["amd"] BindingsDict getAllBindings();
+     ["amd"] idempotent BindingsDict getAllBindings();
      /**
       * Get all bindings associated with a particular AoR
       */
-     ["amd"] BindingSeq getAORBindings(string aor);
+     ["amd"] idempotent BindingSeq getAORBindings(string aor);
 };
 
 }; /* end module V1 */
diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsExtensionPointsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsExtensionPointsIf.ice
index d464a95..b1da497 100755
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsExtensionPointsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsExtensionPointsIf.ice
@@ -18,6 +18,7 @@
 
 #include <AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice>
 #include <AsteriskSCF/System/Hook/HookIf.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 
 module AsteriskSCF
 {
@@ -55,11 +56,15 @@ module V1
          * session proxy so that all session methods may be hooked into. The hook may
          * instead modify the session by adding or removing cookies.
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param originalData Data that the session gateway has for the session
          * @param[out] replacementData Modified data for the session
          * @return A HookResult indicating whether the hook was successful
          */
-        AsteriskSCF::System::Hook::V1::HookResult modifySession(SessionCreationHookData originalData, out SessionCreationHookData replacementData);
+        idempotent AsteriskSCF::System::Hook::V1::HookResult modifySession(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            SessionCreationHookData originalData, 
+            out SessionCreationHookData replacementData);
     };
 
     sequence<SessionCreationHook*> SessionCreationHookSeq;
@@ -69,15 +74,22 @@ module V1
         /**
          * Add a new session decorator hook
          */
-        void addSessionCreationHook(SessionCreationHook* hook);
+        idempotent void addSessionCreationHook(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            SessionCreationHook* hook);
+
         /**
          * Remove a session decorator hook
          */
-        void removeSessionCreationHook(SessionCreationHook* hook);
+        idempotent void removeSessionCreationHook(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            SessionCreationHook* hook);
+
         /**
          * Remove all session decorator hooks
          */
-        void clearSessionCreationHooks();
+        idempotent void clearSessionCreationHooks(
+            AsteriskSCF::System::V1::OperationContext operationContext);
     };
 
     const string BridgeCreationExtensionPointCategory = "BridgeCreationHook";
@@ -116,7 +128,9 @@ module V1
         /**
          * Interpose some operations when creating bridge objects.
          */
-         AsteriskSCF::System::Hook::V1::HookResult execute(BridgeCreationHookData originalData,
+         idempotent AsteriskSCF::System::Hook::V1::HookResult execute(
+             AsteriskSCF::System::V1::OperationContext operationContext,
+             BridgeCreationHookData originalData,
              out BridgeCreationHookData alteredData);
     };
 
@@ -128,17 +142,21 @@ module V1
          * Add a new bridge creation hook. Matches on ID and refreshes the proxy if an object with
          * that ID has already been added.
          */
-        void addHook(BridgeCreationHook* hook);
+        idempotent void addHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            BridgeCreationHook* hook);
 
         /**
          * Remove the bridge creation hook that matches the proxy provided.
          */
-        void removeHook(BridgeCreationHook* hook);
+        idempotent void removeHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            BridgeCreationHook* hook);
 
         /**
          * Clear all registered hooks.
          */
-        void clearHooks();
+        idempotent void clearHooks(AsteriskSCF::System::V1::OperationContext operationContext);
     };
 
     const string PartyIdentificationHookLocatorCategory = "PartyIdHook";
@@ -155,12 +173,14 @@ module V1
          * to the hook. This hook is expected to return the original ConnectedLine record
          * or an updated version of it. 
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param sendingSession The session that has sent ConnectedLine information.
          * @param receivedConnectedLineUpdate The data received from the sending session.
          * @param[out] replacementConnectedLineUpdate Modified data to be used
          * @return A HookResult indicating whether the hook was successful
          */
-        AsteriskSCF::System::Hook::V1::HookResult modifyReceivedConnectedLine(
+        idempotent AsteriskSCF::System::Hook::V1::HookResult modifyReceivedConnectedLine(
+            AsteriskSCF::System::V1::OperationContext operationContext,
             AsteriskSCF::SessionCommunications::V1::Session *sendingSession, 
             AsteriskSCF::SessionCommunications::PartyIdentification::V1::ConnectedLine receivedConnectedLineUpdate,
             out AsteriskSCF::SessionCommunications::PartyIdentification::V1::ConnectedLine replacementConnectedLineUpdate);
@@ -181,13 +201,15 @@ module V1
          * This hook is expected to return the original ConnectedLine record
          * or an updated version of it. 
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param sendingSession The session that has sent ConnectedLine information.
          * @param destinationSession The session that will receive the ConnectedLine information.
          * @param[out] receivedConnectedLine The data received from the sending session.
          * @param[out] replacementConnectedLine Modified data to be used.
          * @return A HookResult indicating whether the hook was successful
          */
-        AsteriskSCF::System::Hook::V1::HookResult modifyForwardingConnectedLine(
+        idempotent AsteriskSCF::System::Hook::V1::HookResult modifyForwardingConnectedLine(
+            AsteriskSCF::System::V1::OperationContext operationContext,
             AsteriskSCF::SessionCommunications::V1::Session *sendingSession, 
             AsteriskSCF::SessionCommunications::V1::Session *destinationSession, 
             AsteriskSCF::SessionCommunications::PartyIdentification::V1::ConnectedLine receivedConnectedLine,
@@ -209,13 +231,15 @@ module V1
          * This hook is expected to return the original ConnectedLine record
          * or an updated version of it. 
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param sendingSession The session that has sent ConnectedLine information.
          * @param destinationSession The session that will receive the ConnectedLine information.
          * @param[out] receivedConnectedLine The data received from the sending session.
          * @param[out] replacementConnectedLine Modified data to be used.
          * @return A HookResult indicating whether the hook was successful
          */
-        AsteriskSCF::System::Hook::V1::HookResult modifyForwardingCaller(
+        idempotent AsteriskSCF::System::Hook::V1::HookResult modifyForwardingCaller(
+            AsteriskSCF::System::V1::OperationContext operationContext,
             AsteriskSCF::SessionCommunications::V1::Session *sendingSession, 
             AsteriskSCF::SessionCommunications::V1::Session *destinationSession, 
             AsteriskSCF::SessionCommunications::PartyIdentification::V1::Caller receivedCaller,
@@ -238,13 +262,15 @@ module V1
          * This hook is expected to return the original Redirections record
          * or an updated version of it. 
          *
+         * @param operationContext Provides unique context for each call to this operation.
          * @param sendingSession The session that has sent Redirections information.
          * @param destinationSession The session that will receive the Redirections information.
          * @param[out] receivedRedirections The data received from the sending session.
          * @param[out] replacementRedirections Modified data to be used.
          * @return A HookResult indicating whether the hook was successful
          */
-        AsteriskSCF::System::Hook::V1::HookResult modifyForwardingRedirections(
+        idempotent AsteriskSCF::System::Hook::V1::HookResult modifyForwardingRedirections(
+            AsteriskSCF::System::V1::OperationContext operationContext,
             AsteriskSCF::SessionCommunications::V1::Session *sendingSession, 
             AsteriskSCF::SessionCommunications::V1::Session *destinationSession, 
             AsteriskSCF::SessionCommunications::PartyIdentification::V1::Redirections receivedRedirections,
@@ -257,47 +283,64 @@ module V1
         /**
          * Add a hook for received ConnectedLine party id. 
          */
-        void addReceivedConnectedLinePartyIdHook(ReceivedConnectedLinePartyIdHook* hook);
+        idempotent void addReceivedConnectedLinePartyIdHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ReceivedConnectedLinePartyIdHook* hook);
 
         /**
          * Add a hook to invoke when forwarding ConnectedLine party id. 
          */
-        void addForwardingConnectedLinePartyIdHook(ForwardingConnectedLinePartyIdHook* hook);
+        idempotent void addForwardingConnectedLinePartyIdHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ForwardingConnectedLinePartyIdHook* hook);
 
         /**
          * Add a hook to invoke when forwarding ConnectedLine party id. 
          */
-        void addForwardingCallerPartyIdHook(ForwardingCallerPartyIdHook* hook);
+        idempotent void addForwardingCallerPartyIdHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ForwardingCallerPartyIdHook* hook);
 
         /**
          * Add a hook to invoke when forwarding Redirections party id record. 
          */
-        void addForwardingRedirectionsPartyIdHook(ForwardingRedirectionsPartyIdHook* hook);
+        idempotent void addForwardingRedirectionsPartyIdHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ForwardingRedirectionsPartyIdHook* hook);
 
         /**
          * Remove a received ConnectedLine hook
          */
-        void removeReceivedConnectedLinePartyIdHook(ReceivedConnectedLinePartyIdHook* hook);
+        idempotent void removeReceivedConnectedLinePartyIdHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ReceivedConnectedLinePartyIdHook* hook);
 
         /**
          * Remove a forwarding ConnectedLine hook
          */
-        void removeForwardingConnectedLinePartyIdHook(ForwardingConnectedLinePartyIdHook* hook);
+        idempotent void removeForwardingConnectedLinePartyIdHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ForwardingConnectedLinePartyIdHook* hook);
 
         /**
          * Remove a forwarding ConnectedLine hook
          */
-        void removeForwardingCallerPartyIdHook(ForwardingCallerPartyIdHook* hook);
+        idempotent void removeForwardingCallerPartyIdHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ForwardingCallerPartyIdHook* hook);
 
         /**
          * Remove a forwarding Redirections hook
          */
-        void removeForwardingRedirectionsPartyIdHook(ForwardingRedirectionsPartyIdHook* hook);
+        idempotent void removeForwardingRedirectionsPartyIdHook(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            ForwardingRedirectionsPartyIdHook* hook);
 
         /**
          * Remove all party identification hooks
          */
-        void clearPartyIdentificationHooks();
+        idempotent void clearPartyIdentificationHooks(
+            AsteriskSCF::System::V1::OperationContext operationContext);
     };
 
 }; /* End of module V1 */
diff --git a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
index b938374..fac949f 100644
--- a/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
+++ b/slice/AsteriskSCF/SessionCommunications/SessionCommunicationsIf.ice
@@ -20,6 +20,7 @@
 #include <AsteriskSCF/Core/Routing/RoutingIf.ice>
 #include <AsteriskSCF/System/Component/ComponentServiceIf.ice>
 #include <AsteriskSCF/System/ExceptionsIf.ice>
+#include <AsteriskSCF/System/OperationsIf.ice>
 #include <AsteriskSCF/System/Time/TimeIf.ice>
 #include <AsteriskSCF/Media/MediaIf.ice>
 #include <AsteriskSCF/SessionCommunications/TelephonyEventsIf.ice>
@@ -299,6 +300,8 @@ module V1
         /**
          * Notification that some indication event has occurred on the session.
          *
+         * @param operationContext Provides unique context for each call to this operation.
+         *
          * @param source The session the event occurred on.
          *
          * @param event The indication event that has occurred.
@@ -309,7 +312,11 @@ module V1
          *
          * @see Indication
          */
-        void indicated(Session* source, Indication event, SessionCookies cookies);
+        idempotent void indicated(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            Session* source, 
+            Indication event, 
+            SessionCookies cookies);
     };
 
     sequence<SessionListener*> SessionListenerSeq;
@@ -343,54 +350,77 @@ module V1
         /**
          * Method called to change the state of streams.
          *
+         * @param operationContext Provides unique context for each call to this operation.
+         *
          * @param streams A dictionary of streams and their new state.
          */
-        ["amd"] void changeStreamStates(AsteriskSCF::Media::V1::StreamStateDict streams);
+        ["amd"] idempotent void changeStreamStates(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            AsteriskSCF::Media::V1::StreamStateDict streams);
 
         /**
          * Method called to add streams.
          *
+         * @param operationContext Provides unique context for each call to this operation.
+         *
          * @param streams A dictionary of streams with state and requested formats.
          *
          * @return StreamInformationDict A dictionary of streams actually added with state
          *       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);
+        ["amd"] idempotent AsteriskSCF::Media::V1::StreamInformationDict addStreams(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            AsteriskSCF::Media::V1::StreamInformationDict streams);
 
         /**
          * Method called to remove streams.
          *
+         * @param operationContext Provides unique context for each call to this operation.
+         *
          * @param streams A dictionary of streams to remove.
          */
-        ["amd"] void removeStreams(AsteriskSCF::Media::V1::StreamInformationDict streams);
+        ["amd"] idempotent void removeStreams(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            AsteriskSCF::Media::V1::StreamInformationDict streams);
 
          /**
           * Method which updates connected line party identification. 
           *
+          * @param operationContext Provides unique context for each call to this operation.
+          *
           * @param connectedLine Connected line party information.
           *
           * @see Asterisk::SessionCommunications::PartyIdentifcation::V1::ConnectedLine
           */
-         void updateConnectedLine(AsteriskSCF::SessionCommunications::PartyIdentification::V1::ConnectedLine connectedLine);
+         idempotent void updateConnectedLine(
+             AsteriskSCF::System::V1::OperationContext operationContext,
+             AsteriskSCF::SessionCommunications::PartyIdentification::V1::ConnectedLine connectedLine);
 
          /**
           * Method which updates caller party identification. 
           *
+          * @param operationContext Provides unique context for each call to this operation.
+          *
           * @param connectedLine Caller party information.
           *
           * @see Asterisk::SessionCommunications::PartyIdentifcation::V1::Caller
           */
-         void updateCallerID(AsteriskSCF::SessionCommunications::PartyIdentification::V1::Caller callerID);
+         idempotent void updateCallerID(
+             AsteriskSCF::System::V1::OperationContext operationContext,
+             AsteriskSCF::SessionCommunications::PartyIdentification::V1::Caller callerID);
 
          /**
           * Method which provides notification of redirections that have occurred. 
           *
+          * @param operationContext Provides unique context for each call to this operation.
+          *
           * @param redirections Redirections that have occurred
           * 
           * @see Asterisk::SessionCommunications::PartyIdentifcation::V1::Redirections
           */
-         void updateRedirections(AsteriskSCF::SessionCommunications::PartyIdentification::V1::Redirections redirections);
+         idempotent void updateRedirections(
+             AsteriskSCF::System::V1::OperationContext operationContext,
+             AsteriskSCF::SessionCommunications::PartyIdentification::V1::Redirections redirections);
     };
 
     /**
@@ -416,48 +446,60 @@ module V1
          *
          * @see SessionInfo
          */
-        ["amd"] SessionInfo addListener(SessionListener* listener);
+        ["amd"] idempotent SessionInfo addListener(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            SessionListener* listener);
 
-    /**
-     * Set (or replace) cookies on the session.
-     *
-     * @param cookies A sequence of one or more concrete objects,
-     *        each of which are of a type derived from SessionCookie.
-     *        The session manager will store these cookies on the
-     *        session, replacing any existing cookies with matching
-     *        types.
-     *
-     * @note  There can only be one cookie of a given type associated
-     *        with a session.
-     **/
-    void setCookies(SessionCookies cookies);
+        /**
+         * Set (or replace) cookies on the session.
+         *
+         * @param operationContext Provides unique context for each call to this operation.
+         *
+         * @param cookies A sequence of one or more concrete objects,
+         *        each of which are of a type derived from SessionCookie.
+         *        The session manager will store these cookies on the
+         *        session, replacing any existing cookies with matching
+         *        types.
+         *
+         * @note  There can only be one cookie of a given type associated
+         *        with a session.
+         **/
+        idempotent void setCookies(
+                AsteriskSCF::System::V1::OperationContext operationContext,
+                SessionCookies cookies);
 
-    /**
-     * Remove cookies from the session.
-     *
-     * @param cookies A sequence of one or more concrete objects,
-     *        each of which are of a type derived from SessionCookie.
-     *        The session manager will remove any cookies on the session
-     *        with types that match the ones in this sequence; the
-     *        content of the supplied cookies is not compared.
-     **/
-    void removeCookies(SessionCookies cookies);
+        /**
+         * Remove cookies from the session.
+         *
+         * @param operationContext Provides unique context for each call to this operation.
+         *
+         * @param cookies A sequence of one or more concrete objects,
+         *        each of which are of a type derived from SessionCookie.
+         *        The session manager will remove any cookies on the session
+         *        with types that match the ones in this sequence; the
+         *        content of the supplied cookies is not compared.
+         **/
+        idempotent void removeCookies(
+                 AsteriskSCF::System::V1::OperationContext operationContext,
+                 SessionCookies cookies);
 
-    /**
-     * Get cookies stored on the session.
-     *
-     * @param cookieTypes A sequence of zero or more concrete objects,
-     *        each of which are of a type derived from SessionCookie.
-     *
-     * @return A sequence of zero or more cookies from the session,
-     *         with types that match the types of the template cookies
-     *         provided in the cookieTypes parameter.
-     **/
-    ["amd"] SessionCookies getCookies(SessionCookies cookieTypes);
+        /**
+         * Get cookies stored on the session.
+         *
+         * @param cookieTypes A sequence of zero or more concrete objects,
+         *        each of which are of a type derived from SessionCookie.
+         *
+         * @return A sequence of zero or more cookies from the session,
+         *         with types that match the types of the template cookies
+         *         provided in the cookieTypes parameter.
+         **/
+        ["amd"] idempotent SessionCookies getCookies(SessionCookies cookieTypes);
 
         /**
          * Request that an indication be performed on a session.
          *
+         * @param operationContext Provides unique context for each call to this operation.
+         *
          * @param event The indication event to perform.
          *
          * @throws IndicationException if an error occurs.
@@ -466,7 +508,10 @@ module V1
          *
          * @see IndicationException
          */
-        ["amd"] void indicate(Indication event) throws IndicationException;
+        ["amd"] idempotent void indicate(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            Indication event) throws 
+              IndicationException;
 
         /**
          * Method which retrieves a proxy to the endpoint object that created the current session.
@@ -475,7 +520,7 @@ module V1
          *
          * @see SessionEndpoint
          */
-        ["amd"] SessionEndpoint* getEndpoint();
+        ["amd"] idempotent SessionEndpoint* getEndpoint();
 
         /**
          * Method which retrieves information about the current session's state.
@@ -484,14 +529,14 @@ module V1
          *
          * @see SessionInfo
          */
-        ["amd"] SessionInfo getInfo();
+        ["amd"] idempotent SessionInfo getInfo();
 
         /**
          * Method which retrieves streams on the session.
          *
          * @return A StreamInformationDict containing streams and information about them.
          */
-        ["amd"] AsteriskSCF::Media::V1::StreamInformationDict getStreams();
+        ["amd"] idempotent AsteriskSCF::Media::V1::StreamInformationDict getStreams();
 
         /**
          * Retrieve a media session instance, if available, for the current session.
@@ -501,7 +546,7 @@ module V1
          * @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.
          */
-        ["amd"] AsteriskSCF::Media::V1::Session* getMediaSession();
+        ["amd"] idempotent AsteriskSCF::Media::V1::Session* getMediaSession();
 
         /**
          * Removes a listener from the current list. Once removed, a listener
@@ -509,12 +554,14 @@ module V1
          *
          * @param listener A proxy to the listener to the remove.
          */
-        void removeListener(SessionListener* listener);
+        idempotent void removeListener(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            SessionListener* listener);
 
         /**
          * Start a session dialogue with a peer.
          */
-        void start();
+        idempotent void start(AsteriskSCF::System::V1::OperationContext operationContext);
 
         /**
          * End the dialogue with the peer, sending the
@@ -522,7 +569,9 @@ module V1
          *
          * @param response Code identifying the reason the dialog stopped.
          */
-        void stop(ResponseCode response);
+        idempotent void stop(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            ResponseCode response);
 
         /**
          * Gets the bridge object this Session is associated with.
@@ -531,7 +580,7 @@ module V1
          *
          * @throws NotBridged if the session is not currently in a bridge.
          */
-        ["amd"] Bridge* getBridge() throws NotBridged;
+        ["amd"] idempotent Bridge* getBridge() throws NotBridged;
 
         /**
          * Set the Bridge for this session.
@@ -542,7 +591,10 @@ module V1
          *
          * @return A current copy of the session information.
          */
-        ["amd"] SessionInfo setBridge(Bridge* newBridge, SessionListener* listener);
+        ["amd"] idempotent SessionInfo setBridge(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            Bridge* newBridge, 
+            SessionListener* listener);
 
         /**
          * Removes this Session from it's associated Bridge.
@@ -551,7 +603,10 @@ module V1
          *
          * @throws NotBridged if the session is not currently in a bridge.
          */
-        ["amd"] void removeBridge(SessionListener* listener) throws NotBridged;
+        ["amd"] idempotent void removeBridge(
+            AsteriskSCF::System::V1::OperationContext operationContext, 
+            SessionListener* listener) throws 
+                NotBridged;
 
         /**
          * Method which sets the session controller proxy to be contacted when actions
@@ -566,6 +621,8 @@ module V1
          * the session so it can also perform controller intervention and receive
          * notification from the component that passed in the SessionController.
          *
+         * @param operationContext Provides unique context for each call to this operation.
+         *
          * @param controller A proxy to the SessionController object implemented by the caller.
          *
          * @return SessionController* A proxy to the session controller implemented by
@@ -575,8 +632,10 @@ module V1
          *
          * @see SessionController
          */
-        ["amd"] SessionController *setAndGetSessionController(SessionController* controller) throws
-            ControllerAlreadySet;
+        ["amd"] idempotent SessionController *setAndGetSessionController(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            SessionController* controller) throws
+              ControllerAlreadySet;
 
         /**
          * Method which removes a session controller from a session.
@@ -587,7 +646,9 @@ module V1
          *
          * @param controller A proxy to the session controller to remove.
          */
-        ["amd"] void removeSessionController(SessionController* controller);
+        ["amd"] idempotent void removeSessionController(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            SessionController* controller);
 
         /**
          * Method which retrieves caller party identification information
@@ -734,7 +795,7 @@ module V1
          * 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 operationContext Provides unique context for each call to this operation.
          *
          * @param source The initiating session.
          *
@@ -751,21 +812,23 @@ module V1
          * @throws BridgingException if the bridge could not be setup properly.
          */
         ["amd"]
-        void routeSession(string operationId, Session* source,
+        idempotent void routeSession(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            Session* source,
             string destination,
             AsteriskSCF::SessionCommunications::ExtensionPoints::V1::SessionCreationHook* oneShotHook,
             AsteriskSCF::SessionCommunications::PartyIdentification::V1::Caller callerID,
             AsteriskSCF::SessionCommunications::PartyIdentification::V1::Redirections redirects)
            throws AsteriskSCF::Core::Routing::V1::DestinationNotFoundException,
            EndpointUnreachableException, SessionCreationException,
-           SourceTerminatedPreBridgingException, BridgingException ;
+           SourceTerminatedPreBridgingException, BridgingException;
 
         /**
          * Connect sessions bridged with one session with a new
          * session routable by the destination param.
          * The session specified may optionally be replaced.
          *
-         * @param operationId Unique id for this operation.
+         * @param operationContext Provides unique context for each call to this operation.
          *
          * @param sessionToReplace The session whose bridged sessions are connected
          *   with a newly created session. The bridge object is obtained from the accessor on this
@@ -789,22 +852,22 @@ module V1
          * @throws NotBridged if the provided session is not currently in a bridge.
          */
         ["amd"]
-        void connectBridgedSessionsWithDestination(
-                string operationId,
+        idempotent void connectBridgedSessionsWithDestination(
+                AsteriskSCF::System::V1::OperationContext operationContext,
                 Session* sessionToReplace,
                 string destination,
                 bool replaceSession,
                 AsteriskSCF::SessionCommunications::ExtensionPoints::V1::SessionCreationHook* oneShotHook)
            throws AsteriskSCF::Core::Routing::V1::DestinationNotFoundException,
            SessionCreationException,
-           SourceTerminatedPreBridgingException, BridgingException, NotBridged ;
+           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 operationContext Provides unique context for each call to this operation.
          *
          * @param sessionToReplace The session that is to be replaced in a
          *   bridge. The bridge obejct associated with this session will survive, and
@@ -827,12 +890,12 @@ module V1
          * @throws NotBridged if the session provided in sessionToReplace is not currently in a bridge.
          */
         ["amd"]
-        void connectBridgedSessions(
-                string operationId,
+        idempotent void connectBridgedSessions(
+                AsteriskSCF::System::V1::OperationContext operationContext,
                 Session* sessionToReplace,
                 Session* bridgedSession,
                 bool replaceSession)
-           throws SourceTerminatedPreBridgingException, BridgingException, NotBridged ;
+           throws SourceTerminatedPreBridgingException, BridgingException, NotBridged;
     };
 
     /**
@@ -846,6 +909,8 @@ module V1
          * a SessionListener object for notification of changes to the session and also
          * optionally specifying the streams that should be present on the session.
          *
+         * @param operationContext Provides unique context for each call to this operation.
+         *
          * @param destination A stringified identifier or address for the destination.
          *
          * @param callback A SessionListener object to be registered as a listener on the
@@ -855,8 +920,11 @@ module V1
          * @return A newly created session object for the destination.
          *
          */
-        Session* createSession(string destination, SessionListener* callback,
-                AsteriskSCF::SessionCommunications::ExtensionPoints::V1::SessionCreationHook* oneShotHook);
+        idempotent Session* createSession(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            string destination, 
+            SessionListener* callback,
+            AsteriskSCF::SessionCommunications::ExtensionPoints::V1::SessionCreationHook* oneShotHook);
 
         /**
          * Returns the active sessions for this session endpoint.
@@ -871,28 +939,36 @@ module V1
          * any sessions created henceforth, until the default listener 
          * is removed. 
          */
-         void addDefaultSessionListener(SessionListener* listener);
+        idempotent void addDefaultSessionListener(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            SessionListener* listener);
 
         /**
          * Removes a default SessionListener. Doesn't remove the 
          * the listener from any existing sessions, but rather 
          * stops adding the listener to future sessions.
          */
-         void removeDefaultSessionListener(SessionListener* listener);
+        idempotent void removeDefaultSessionListener(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            SessionListener* listener);
 
         /**
          * Adds default SessionCookies for sessions created for this endpoint.
          * Does not alter any existing sessions, but any sessions created
          * henceforth will have these cookies set.
          */
-         void addDefaultSessionCookies(SessionCookies cookies);
+        idempotent void addDefaultSessionCookies(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            SessionCookies cookies);
 
         /**
          * Removes a set of default SessionCookies for sessions created for this endpoint.
          * Doesn't remove cookies from any existing sessions, but new 
          * sessions for this endpoint will not have these cookies set. 
          */
-         void removeDefaultSessionCookies(SessionCookies cookies);
+        idempotent void removeDefaultSessionCookies(
+            AsteriskSCF::System::V1::OperationContext operationContext,
+            SessionCookies cookies);
     };
 
     /**
@@ -994,22 +1070,26 @@ module V1
          * Add a sequence of session proxies to the bridge. Sessions are started
          * if necessary.
          *
+         * @param operationContext Information about the logical operation context.
          * @param session A sequence of session proxies.
          *
          * @throws InvalidSessions if any of the provided sessions are invalid.
+         * @throws BridgeSessionOperationFailed if any of the sessions could not be bridged.
          *
          * @see Session
          * @see InvalidSessions
+         * @see AsteriskSCF::System::V1::OperationContext
          */
         ["amd"]
-        void addSessions(
-            SessionWithSessionInfoSeq sessionInfos)
-            throws InvalidSessions, BridgeSessionOperationFailed;
+        idempotent void addSessions(AsteriskSCF::System::V1::OperationContext operationContext,
+                SessionWithSessionInfoSeq sessionInfos) throws
+                 InvalidSessions, BridgeSessionOperationFailed;
 
         /**
-         * Abruptly destroy the bridge. Sessions will not be stopped.
+         * Abruptly destroy the bridge. Sessions will not be stopped. Calls subsequent to the initial call will either
+         * be ignored or an ObjectNotExistException will be thrown.
          */
-        void destroy();
+        idempotent void destroy(AsteriskSCF::System::V1::OperationContext operationContext);
 
         /**
          * List the sessions currently on the bridge.
@@ -1022,46 +1102,62 @@ module V1
          * Removes one or more sessions from the bridge. Sessions are not stopped
          * as they are removed.
          *
+         * @param operationContext Information about the logical operation context.
          * @param sessions A sequence of session proxies.
          *
... 843 lines suppressed ...


-- 
asterisk-scf/release/slice.git



More information about the asterisk-scf-commits mailing list