[asterisk-scf-commits] asterisk-scf/integration/bridging.git branch "bridge-cookies" created.

Commits to the Asterisk SCF project code repositories asterisk-scf-commits at lists.digium.com
Tue Jul 12 09:55:18 CDT 2011


branch "bridge-cookies" has been created
        at  96d470ec32c37b0602c6bb537d86688ed8a1a144 (commit)

- Log -----------------------------------------------------------------
commit 96d470ec32c37b0602c6bb537d86688ed8a1a144
Author: Joshua Colp <jcolp at digium.com>
Date:   Sun Jul 10 11:49:58 2011 -0300

    Merge revised media design implementation.

diff --git a/src/MediaSplicer.cpp b/src/MediaSplicer.cpp
index e8abb17..e4992fb 100755
--- a/src/MediaSplicer.cpp
+++ b/src/MediaSplicer.cpp
@@ -254,7 +254,8 @@ public:
             {
                 try
                 {
-                    (*i)->setSink(StreamSinkPrx());
+//                    (*i)->setSink(StreamSinkPrx());
+// TODO: call removeSink
                 }
                 catch (const Ice::Exception& ex)
                 {
@@ -324,7 +325,8 @@ public:
             {
                 try
                 {
-                    (*i)->setSink(StreamSinkPrx());
+//                    (*i)->setSink(StreamSinkPrx());
+// TODO: Call removeSink
                 }
                 catch (const Ice::Exception& ex)
                 {
@@ -790,7 +792,7 @@ protected:
         {
         }
 
-        void setSinkCB()
+        void addSinkCB()
         {
             bool other = false;
             {
@@ -863,7 +865,7 @@ protected:
         for (OutgoingPairings::iterator i = mMaterials->outgoingPairings.begin(); i != mMaterials->outgoingPairings.end(); ++i)
         {
             OutgoingHelperPtr h(new OutgoingHelper(this, index));
-            i->second->begin_setSink(i->first, AsteriskSCF::Media::V1::newCallback_StreamSource_setSink(h, &OutgoingHelper::setSinkCB, &OutgoingHelper::failed));
+            i->second->begin_addSink(i->first, AsteriskSCF::Media::V1::newCallback_StreamSource_addSink(h, &OutgoingHelper::addSinkCB, &OutgoingHelper::failed));
             i->first->begin_setSource(i->second, AsteriskSCF::Media::V1::newCallback_StreamSink_setSource(h, &OutgoingHelper::setSourceCB, &OutgoingHelper::failed));
             ++index;
         }
@@ -871,7 +873,7 @@ protected:
         for (IncomingPairings::iterator i = mMaterials->incomingPairings.begin(); i != mMaterials->incomingPairings.end(); ++i)
         {
             IncomingHelperPtr h(new IncomingHelper(this, index));
-            i->first->begin_setSink(i->second,  AsteriskSCF::Media::V1::newCallback_StreamSource_setSink(h, &IncomingHelper::setSinkCB, &IncomingHelper::failed));
+            i->first->begin_addSink(i->second,  AsteriskSCF::Media::V1::newCallback_StreamSource_addSink(h, &IncomingHelper::addSinkCB, &IncomingHelper::failed));
             i->second->begin_setSource(i->first,  AsteriskSCF::Media::V1::newCallback_StreamSink_setSource(h, &IncomingHelper::setSourceCB, &IncomingHelper::failed));
             ++index;
         }

commit a81a3f0d61ebb558cf3f07bead558b8db8955362
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Thu Jun 23 14:02:36 2011 -0500

    Resolve an 'unreference variable' warning.

diff --git a/src/SessionWrapper.cpp b/src/SessionWrapper.cpp
index c66b0f8..ea9f8fa 100644
--- a/src/SessionWrapper.cpp
+++ b/src/SessionWrapper.cpp
@@ -208,7 +208,7 @@ protected:
         {
             ex.ice_throw();
         }
-        catch (const Ice::ObjectNotExistException& x)
+        catch (const Ice::ObjectNotExistException&)
         {
             mLogger(Warning) << "received an ONE for " << mSession->id() << " when calling stop(), continuing...";
             mListener->succeeded();

commit 00c09a3b1e9fc03026b3f80fc6f9429ebb1ca828
Author: Mark Michelson <mmichelson at digium.com>
Date:   Thu Jun 23 12:28:37 2011 -0500

    Erase elements when removing default bridge listeners.

diff --git a/src/BridgeManagerImpl.cpp b/src/BridgeManagerImpl.cpp
index 4c132dd..e75e7db 100644
--- a/src/BridgeManagerImpl.cpp
+++ b/src/BridgeManagerImpl.cpp
@@ -280,8 +280,8 @@ void BridgeManagerImpl::removeDefaultBridgeListener(const BridgeListenerPrx& toR
     }
     boost::unique_lock<boost::shared_mutex> lock(mLock);
     statePreCheck(BOOST_CURRENT_FUNCTION);
-    remove_if(mState->defaultBridgeListeners.begin(), mState->defaultBridgeListeners.end(), 
-      IdentityComparePredicate<BridgeListenerPrx>(toRemove));
+    mState->defaultBridgeListeners.erase(remove_if(mState->defaultBridgeListeners.begin(), mState->defaultBridgeListeners.end(), 
+      IdentityComparePredicate<BridgeListenerPrx>(toRemove)), mState->defaultBridgeListeners.end());
     update();
 }
 

commit bde7592a43f86d9b223d7568300da0d161766a3f
Author: Joshua Colp <jcolp at digium.com>
Date:   Tue Jun 21 17:01:41 2011 -0300

    Merge session cookies support.

diff --git a/src/SessionListener.cpp b/src/SessionListener.cpp
index 10a8d73..34d825f 100644
--- a/src/SessionListener.cpp
+++ b/src/SessionListener.cpp
@@ -114,7 +114,8 @@ public:
     }
 
     void indicated(const AsteriskSCF::SessionCommunications::V1::SessionPrx& source,
-        const AsteriskSCF::SessionCommunications::V1::IndicationPtr& indication, const Ice::Current&)
+        const AsteriskSCF::SessionCommunications::V1::IndicationPtr& indication,
+	const AsteriskSCF::SessionCommunications::V1::SessionCookies&, const Ice::Current&)
     {
 	AsteriskSCF::SessionCommunications::V1::ConnectedIndicationPtr connected;
 	AsteriskSCF::SessionCommunications::V1::RingingIndicationPtr ringing;

commit dfce33b5d280441d21899a6430e410a7a9a06eec
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Fri Jun 17 11:46:51 2011 -0500

    Rely on automatic inclusion of project's 'include' directory.

diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 73c590d..a9de994 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,7 +1,7 @@
 include_directories(${logger_dir}/include)
 include_directories(${astscf-ice-util-cpp_dir}/include)
 
-include_directories("../src")
+include_directories(../src)
 
 astscf_slice_include_collection(TEST_CHANNEL)
 

commit 582597ef057e23615e58f34cb25fd189cb24500b
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Wed Jun 15 16:55:31 2011 -0500

    Provide 'astscf' prefix for linking to ice-util-cpp library.

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index af0b9a3..c7f87b5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,5 @@
 include_directories(${logger_dir}/include)
-include_directories(${ice-util-cpp_dir}/include)
+include_directories(${astscf-ice-util-cpp_dir}/include)
 
 astscf_component_init(bridgeservice)
 astscf_component_add_files(bridgeservice Service.cpp)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index a770dfa..73c590d 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,5 +1,5 @@
 include_directories(${logger_dir}/include)
-include_directories(${ice-util-cpp_dir}/include)
+include_directories(${astscf-ice-util-cpp_dir}/include)
 
 include_directories("../src")
 

commit 44deec087299ae6e7e457d92a8e3eddb33bf5d91
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Wed Jun 15 16:40:16 2011 -0500

    Install component-specific Slice files.
    
    Use astscf_slice_collection_install() to install the Slice files provided
    by each component, that define its interfaces. As part of this change, many
    of these Slice files were renamed and moved into different namespaces, to
    provide consistency.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 77d9be5..63316cc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,3 +4,4 @@ add_subdirectory(src)
 if(BUILD_TESTING)
   add_subdirectory(test)
 endif()
+astscf_slice_collection_install(PROJECT)
diff --git a/slice/BridgeReplicatorIf.ice b/slice/AsteriskSCF/Replication/BridgeService/BridgeReplicatorIf.ice
similarity index 97%
rename from slice/BridgeReplicatorIf.ice
rename to slice/AsteriskSCF/Replication/BridgeService/BridgeReplicatorIf.ice
index 1d3e1b8..4b404cb 100644
--- a/slice/BridgeReplicatorIf.ice
+++ b/slice/AsteriskSCF/Replication/BridgeService/BridgeReplicatorIf.ice
@@ -22,7 +22,9 @@
 
 module AsteriskSCF
 {
-module Bridge
+module Replication
+{
+module BridgeService
 {
 ["suppress"]
 module V1
@@ -240,6 +242,7 @@ interface Replicator
     idempotent ReplicatedStateItemSeq getAllState();
 };
 
-}; /* End of namespace V1 */
-}; /* End of namespace Bridge */
-}; /* End of namespace AsteriskSCF */
+}; /* End of module V1 */
+}; /* End of module BridgeService */
+}; /* End of module Replication */
+}; /* End of module AsteriskSCF */
diff --git a/src/BridgeImpl.cpp b/src/BridgeImpl.cpp
index 60b6bb2..f669b40 100755
--- a/src/BridgeImpl.cpp
+++ b/src/BridgeImpl.cpp
@@ -33,7 +33,7 @@
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::SessionCommunications::V1;
 using namespace AsteriskSCF::BridgeService;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace AsteriskSCF;
 using namespace std;
 
@@ -1016,7 +1016,7 @@ AsteriskSCF::BridgeService::BridgeServant::create(const string& name, const Ice:
         const ReplicatorSmartPrx& replicator,
         const Logger& logger)
 {
-    BridgeStateItemPtr state(new AsteriskSCF::Bridge::V1::BridgeStateItem);
+    BridgeStateItemPtr state(new AsteriskSCF::Replication::BridgeService::V1::BridgeStateItem);
     state->runningState = Running;
     state->serial = SerialCounterStart;
     //
@@ -1033,7 +1033,7 @@ AsteriskSCF::BridgeService::BridgeServant::create(const Ice::ObjectAdapterPtr& o
         const AsteriskSCF::BridgeService::BridgeListenerMgrPtr& listenerMgr,
         const ReplicatorSmartPrx& replicator,
         const Logger& logger,
-        const AsteriskSCF::Bridge::V1::BridgeStateItemPtr& state)
+        const AsteriskSCF::Replication::BridgeService::V1::BridgeStateItemPtr& state)
 {
     logger(Debug) << FUNLOG << ": creating replica for " << state->bridgeId;
     IceUtil::Handle<AsteriskSCF::BridgeService::BridgeServant> bridge(
diff --git a/src/BridgeImpl.h b/src/BridgeImpl.h
index f764355..2c9ab9f 100644
--- a/src/BridgeImpl.h
+++ b/src/BridgeImpl.h
@@ -98,10 +98,10 @@ public:
      * TODO: complete documentation.
      *
      **/
-    virtual void updateState(const AsteriskSCF::Bridge::V1::BridgeStateItemPtr& state) = 0;
+    virtual void updateState(const AsteriskSCF::Replication::BridgeService::V1::BridgeStateItemPtr& state) = 0;
 
-    virtual void addListener(const AsteriskSCF::Bridge::V1::BridgeListenerStateItemPtr& state) = 0;
-    virtual void removeListener(const AsteriskSCF::Bridge::V1::BridgeListenerStateItemPtr& state) = 0;
+    virtual void addListener(const AsteriskSCF::Replication::BridgeService::V1::BridgeListenerStateItemPtr& state) = 0;
+    virtual void removeListener(const AsteriskSCF::Replication::BridgeService::V1::BridgeListenerStateItemPtr& state) = 0;
 
     virtual std::string id() = 0;
 
@@ -148,7 +148,7 @@ public:
             const AsteriskSCF::BridgeService::BridgeListenerMgrPtr& listenerMgr,
             const ReplicatorSmartPrx& replicator,
             const AsteriskSCF::System::Logging::Logger& logger,
-            const AsteriskSCF::Bridge::V1::BridgeStateItemPtr& state);
+            const AsteriskSCF::Replication::BridgeService::V1::BridgeStateItemPtr& state);
 };
 typedef IceUtil::Handle<BridgeServant> BridgeServantPtr;
 
diff --git a/src/BridgeManagerImpl.cpp b/src/BridgeManagerImpl.cpp
index f2696c0..4c132dd 100644
--- a/src/BridgeManagerImpl.cpp
+++ b/src/BridgeManagerImpl.cpp
@@ -34,7 +34,7 @@ using namespace AsteriskSCF::System::Component::V1;
 using namespace AsteriskSCF::SessionCommunications::V1;
 using namespace AsteriskSCF::Core::Discovery::V1;
 using namespace AsteriskSCF::BridgeService;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace std;
 
 namespace 
@@ -302,7 +302,7 @@ void BridgeManagerImpl::shutdown(const Ice::Current& current)
 {
     mLogger(Debug) << FUNLOG << ":" << objectIdFromCurrent(current); 
     boost::unique_lock<boost::shared_mutex> lock(mLock);
-    if (mState->runningState == AsteriskSCF::Bridge::V1::ShuttingDown)
+    if (mState->runningState == AsteriskSCF::Replication::BridgeService::V1::ShuttingDown)
     {
         mLogger(Debug) << FUNLOG << ": already shutting down.";
         return;
@@ -317,7 +317,7 @@ void BridgeManagerImpl::shutdown(const Ice::Current& current)
         mListeners->stopping();
     }
     mLogger(Info) << current.adapter->getCommunicator()->identityToString(current.id) << ": shutting down." ;
-    mState->runningState = AsteriskSCF::Bridge::V1::ShuttingDown;
+    mState->runningState = AsteriskSCF::Replication::BridgeService::V1::ShuttingDown;
     reap();
     for (vector<BridgeInfo>::iterator i = mBridges.begin(); i != mBridges.end(); ++i)
     {
@@ -329,13 +329,13 @@ void BridgeManagerImpl::shutdown(const Ice::Current& current)
         mListeners->stopped();
     }
     mAdapter->getCommunicator()->shutdown();
-    mState->runningState = AsteriskSCF::Bridge::V1::Destroyed;
+    mState->runningState = AsteriskSCF::Replication::BridgeService::V1::Destroyed;
 }
 
 bool BridgeManagerImpl::destroyed()
 {
     mLogger(Debug) << FUNLOG;
-    return mState->runningState == AsteriskSCF::Bridge::V1::Destroyed;
+    return mState->runningState == AsteriskSCF::Replication::BridgeService::V1::Destroyed;
 }
 
 BridgeManagerStateItemPtr BridgeManagerImpl::getState()
@@ -441,12 +441,12 @@ void BridgeManagerImpl::statePreCheck(const string& caller)
     {
         mLogger(Info) << caller << ": remote call invoked when not active!";
     }
-    if (mState->runningState == AsteriskSCF::Bridge::V1::ShuttingDown)
+    if (mState->runningState == AsteriskSCF::Replication::BridgeService::V1::ShuttingDown)
     {
         mLogger(Debug) << caller << ": called when shutting down." ;
         throw AsteriskSCF::System::Component::V1::ShuttingDown();
     }
-    if (mState->runningState == AsteriskSCF::Bridge::V1::Paused || mListeners->isSuspended())
+    if (mState->runningState == AsteriskSCF::Replication::BridgeService::V1::Paused || mListeners->isSuspended())
     {
         mLogger(Debug) << caller << ": called when suspended." ;
         throw AsteriskSCF::System::Component::V1::Suspended();
diff --git a/src/BridgeManagerImpl.h b/src/BridgeManagerImpl.h
index dd7fad3..2f22125 100644
--- a/src/BridgeManagerImpl.h
+++ b/src/BridgeManagerImpl.h
@@ -42,9 +42,9 @@ public:
      *
      **/
 
-    virtual AsteriskSCF::Bridge::V1::BridgeManagerStateItemPtr getState() = 0;
+    virtual AsteriskSCF::Replication::BridgeService::V1::BridgeManagerStateItemPtr getState() = 0;
 
-    virtual void updateState(const AsteriskSCF::Bridge::V1::BridgeManagerStateItemPtr& state) = 0;
+    virtual void updateState(const AsteriskSCF::Replication::BridgeService::V1::BridgeManagerStateItemPtr& state) = 0;
 
     virtual std::vector<BridgeServantPtr> getBridges() = 0;
 
@@ -52,9 +52,9 @@ public:
 
     virtual std::string getID() = 0;
 
-    virtual void createBridgeReplica(const AsteriskSCF::Bridge::V1::BridgeStateItemPtr& bridgeState) = 0;
+    virtual void createBridgeReplica(const AsteriskSCF::Replication::BridgeService::V1::BridgeStateItemPtr& bridgeState) = 0;
 
-    virtual void removeBridge(const AsteriskSCF::Bridge::V1::BridgeStateItemPtr& bridgeState) = 0;
+    virtual void removeBridge(const AsteriskSCF::Replication::BridgeService::V1::BridgeStateItemPtr& bridgeState) = 0;
 };
 
 typedef IceUtil::Handle<BridgeManagerServant> BridgeManagerServantPtr;
diff --git a/src/BridgeReplicatorService.cpp b/src/BridgeReplicatorService.cpp
index e672287..e80f8e1 100644
--- a/src/BridgeReplicatorService.cpp
+++ b/src/BridgeReplicatorService.cpp
@@ -27,15 +27,15 @@
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::SessionCommunications::V1;
 using namespace AsteriskSCF::Core::Discovery::V1;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace AsteriskSCF;
 using namespace std;
 
 typedef AsteriskSCF::Replication::StateReplicator<
-    AsteriskSCF::Bridge::V1::Replicator,
-    AsteriskSCF::Bridge::V1::ReplicatedStateItemPtr,
+    AsteriskSCF::Replication::BridgeService::V1::Replicator,
+    AsteriskSCF::Replication::BridgeService::V1::ReplicatedStateItemPtr,
     string,
-    AsteriskSCF::Bridge::V1::ReplicatorListenerPrx> ReplicatorI;
+    AsteriskSCF::Replication::BridgeService::V1::ReplicatorListenerPrx> ReplicatorI;
 
 typedef IceUtil::Handle<ReplicatorI> ReplicatorIPtr;
 
diff --git a/src/BridgeReplicatorStateListenerI.cpp b/src/BridgeReplicatorStateListenerI.cpp
index 9b82c50..d260135 100644
--- a/src/BridgeReplicatorStateListenerI.cpp
+++ b/src/BridgeReplicatorStateListenerI.cpp
@@ -25,7 +25,7 @@
 
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::BridgeService;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace std;
 
 namespace
diff --git a/src/BridgeReplicatorStateListenerI.h b/src/BridgeReplicatorStateListenerI.h
index e666b59..f8e4cf6 100644
--- a/src/BridgeReplicatorStateListenerI.h
+++ b/src/BridgeReplicatorStateListenerI.h
@@ -35,7 +35,7 @@ class Logger;
 namespace BridgeService
 {
     
-Bridge::V1::ReplicatorListenerPtr createStateListener(const AsteriskSCF::System::Logging::Logger& logger,
+Replication::BridgeService::V1::ReplicatorListenerPtr createStateListener(const AsteriskSCF::System::Logging::Logger& logger,
         const AsteriskSCF::BridgeService::BridgeManagerServantPtr& manager);
     
 } /* End of namespace BridgeService */
diff --git a/src/BridgeServiceConfig.h b/src/BridgeServiceConfig.h
index 5452f5e..6acfcb8 100644
--- a/src/BridgeServiceConfig.h
+++ b/src/BridgeServiceConfig.h
@@ -67,7 +67,7 @@ inline std::string objectIdFromCurrent(const Ice::Current& current)
     return current.adapter->getCommunicator()->identityToString(current.id);
 }
 
-typedef AsteriskSCF::Discovery::SmartProxy<AsteriskSCF::Bridge::V1::ReplicatorPrx> ReplicatorSmartPrx;
+typedef AsteriskSCF::Discovery::SmartProxy<AsteriskSCF::Replication::BridgeService::V1::ReplicatorPrx> ReplicatorSmartPrx;
 
 
 } // End of namespace BridgeService
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0b46805..af0b9a3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -29,7 +29,7 @@ astscf_component_add_files(bridgeservice Tasks.h)
 astscf_component_add_files(bridgeservice InternalExceptions.h)
 astscf_component_add_files(bridgeservice BridgeServiceConfig.h)
 astscf_component_add_files(bridgeservice ListenerManager.h)
-astscf_component_add_slices(bridgeservice PROJECT BridgeReplicatorIf.ice)
+astscf_component_add_slices(bridgeservice PROJECT AsteriskSCF/Replication/BridgeService/BridgeReplicatorIf.ice)
 astscf_component_add_ice_libraries(bridgeservice IceStorm)
 astscf_component_add_boost_libraries(bridgeservice thread date_time)
 astscf_component_add_slice_collection_libraries(bridgeservice ASTSCF)
@@ -39,7 +39,7 @@ astscf_component_install(bridgeservice)
 
 astscf_component_init(BridgeReplicator)
 astscf_component_add_files(BridgeReplicator BridgeReplicatorService.cpp)
-astscf_component_add_slices(BridgeReplicator PROJECT BridgeReplicatorIf.ice)
+astscf_component_add_slices(BridgeReplicator PROJECT AsteriskSCF/Replication/BridgeService/BridgeReplicatorIf.ice)
 astscf_component_add_ice_libraries(BridgeReplicator IceStorm)
 astscf_component_add_boost_libraries(BridgeReplicator thread date_time)
 astscf_component_add_slice_collection_libraries(BridgeReplicator ASTSCF)
diff --git a/src/DebugUtil.h b/src/DebugUtil.h
index b8e6e41..c259a2b 100644
--- a/src/DebugUtil.h
+++ b/src/DebugUtil.h
@@ -26,7 +26,7 @@ namespace BridgeService
 
 inline
 std::ostream& dumpState(std::ostream& os, const std::string& prefix,
-        const AsteriskSCF::Bridge::V1::BridgedSessionPtr& session,
+        const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionPtr& session,
         const Ice::CommunicatorPtr& comm)
 {
 #ifndef _NDEBUG
@@ -42,13 +42,13 @@ std::ostream& dumpState(std::ostream& os, const std::string& prefix,
     os << prefix   << "State: ";
     switch (session->currentState)
     {
-        case AsteriskSCF::Bridge::V1::Added:
+        case AsteriskSCF::Replication::BridgeService::V1::Added:
             os << "added\n";
             break;
-        case AsteriskSCF::Bridge::V1::Connected:
+        case AsteriskSCF::Replication::BridgeService::V1::Connected:
             os << "connected\n";
             break;
-        case AsteriskSCF::Bridge::V1::Disconnected:
+        case AsteriskSCF::Replication::BridgeService::V1::Disconnected:
             os << "disconnected\n";
             break;
         default:
@@ -62,7 +62,7 @@ std::ostream& dumpState(std::ostream& os, const std::string& prefix,
 }
 
 inline
-std::ostream& dumpState(std::ostream& os, const AsteriskSCF::Bridge::V1::BridgeStateItemPtr& state,
+std::ostream& dumpState(std::ostream& os, const AsteriskSCF::Replication::BridgeService::V1::BridgeStateItemPtr& state,
         const Ice::CommunicatorPtr&)
 {
 #ifndef _NDEBUG
@@ -77,16 +77,16 @@ std::ostream& dumpState(std::ostream& os, const AsteriskSCF::Bridge::V1::BridgeS
     os << "state : ";
     switch (state->runningState)
     {
-        case AsteriskSCF::Bridge::V1::Running:
+        case AsteriskSCF::Replication::BridgeService::V1::Running:
             os << "running\n";
             break;
-        case AsteriskSCF::Bridge::V1::Paused:
+        case AsteriskSCF::Replication::BridgeService::V1::Paused:
             os << "paused\n";
             break;
-        case AsteriskSCF::Bridge::V1::ShuttingDown:
+        case AsteriskSCF::Replication::BridgeService::V1::ShuttingDown:
             os << "shutting down\n";
             break;
-        case AsteriskSCF::Bridge::V1::Destroyed:
+        case AsteriskSCF::Replication::BridgeService::V1::Destroyed:
             os << "destroyed\n";
             break;
         default:
@@ -95,10 +95,10 @@ std::ostream& dumpState(std::ostream& os, const AsteriskSCF::Bridge::V1::BridgeS
     os << "Media replication policy: ";
     switch (state->mediaReplicationPolicy)
     {
-        case AsteriskSCF::Bridge::V1::Replicate:
+        case AsteriskSCF::Replication::BridgeService::V1::Replicate:
             os << "replicate\n";
             break;
-        case AsteriskSCF::Bridge::V1::Reconstruct:
+        case AsteriskSCF::Replication::BridgeService::V1::Reconstruct:
             os << "reconstruct\n";
             break;
         default:
diff --git a/src/MediaSplicer.cpp b/src/MediaSplicer.cpp
index 1a631b6..e8abb17 100755
--- a/src/MediaSplicer.cpp
+++ b/src/MediaSplicer.cpp
@@ -37,7 +37,7 @@
 //
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::Media::V1;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace std;
 
 namespace AsteriskSCF
diff --git a/src/MediaSplicer.h b/src/MediaSplicer.h
index 835374d..e00b2a9 100644
--- a/src/MediaSplicer.h
+++ b/src/MediaSplicer.h
@@ -71,7 +71,7 @@ public:
     /**
      * Replication support function.
      **/
-    virtual void update(const AsteriskSCF::Bridge::V1::SessionPairingPtr& update) = 0;
+    virtual void update(const AsteriskSCF::Replication::BridgeService::V1::SessionPairingPtr& update) = 0;
 };
 typedef IceUtil::Handle<MediaConnector> MediaConnectorPtr;
  
@@ -83,7 +83,7 @@ public:
             const AsteriskSCF::System::Logging::Logger& logger);
     
     void connect(const SessionWrapperPtr& session, const AsteriskSCF::SessionCommunications::V1::SessionPrx& sessionPrx);
-    MediaConnectorPtr createReplica(const AsteriskSCF::Bridge::V1::SessionPairingPtr& pairings);
+    MediaConnectorPtr createReplica(const AsteriskSCF::Replication::BridgeService::V1::SessionPairingPtr& pairings);
 
 private:
     boost::shared_ptr<MediaSplicerI> mImpl;
diff --git a/src/Service.cpp b/src/Service.cpp
index 451ed60..f0379d4 100644
--- a/src/Service.cpp
+++ b/src/Service.cpp
@@ -32,7 +32,7 @@ using namespace AsteriskSCF::SessionCommunications::V1;
 using namespace AsteriskSCF::Core::Discovery::V1;
 using namespace AsteriskSCF::System::Component::V1;
 using namespace AsteriskSCF::BridgeService;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace AsteriskSCF;
 using namespace std;
 
diff --git a/src/SessionCollection.cpp b/src/SessionCollection.cpp
index bf9db83..eb15ad9 100644
--- a/src/SessionCollection.cpp
+++ b/src/SessionCollection.cpp
@@ -21,7 +21,7 @@
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::SessionCommunications::V1;
 using namespace AsteriskSCF::BridgeService;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace AsteriskSCF;
 using namespace std;
 
diff --git a/src/SessionCollection.h b/src/SessionCollection.h
index 745c7df..d306da9 100644
--- a/src/SessionCollection.h
+++ b/src/SessionCollection.h
@@ -128,9 +128,9 @@ public:
      **/
     void reap();
 
-    void replicaUpdate(const AsteriskSCF::Bridge::V1::BridgedSessionPtr& bridgedSession);
+    void replicaUpdate(const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionPtr& bridgedSession);
 
-    void removeSession(const AsteriskSCF::Bridge::V1::BridgedSessionPtr& bridgedSession);
+    void removeSession(const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionPtr& bridgedSession);
     
 private:
 
diff --git a/src/SessionListener.cpp b/src/SessionListener.cpp
index bf5b450..10a8d73 100644
--- a/src/SessionListener.cpp
+++ b/src/SessionListener.cpp
@@ -21,7 +21,7 @@
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::SessionCommunications::V1;
 using namespace AsteriskSCF::BridgeService;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace AsteriskSCF;
 using namespace std;
 
diff --git a/src/SessionOperations.cpp b/src/SessionOperations.cpp
index d8ab630..58670a9 100644
--- a/src/SessionOperations.cpp
+++ b/src/SessionOperations.cpp
@@ -19,7 +19,7 @@
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::SessionCommunications::V1;
 using namespace AsteriskSCF::BridgeService;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace AsteriskSCF;
 using namespace std;
 
diff --git a/src/SessionOperations.h b/src/SessionOperations.h
index 89e6c8b..97726fc 100644
--- a/src/SessionOperations.h
+++ b/src/SessionOperations.h
@@ -80,7 +80,7 @@ private:
 class IfStateCriteria
 {
 public:
-    IfStateCriteria(AsteriskSCF::Bridge::V1::BridgedSessionState state) :
+    IfStateCriteria(AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState state) :
         mState(state)
     {
     }
@@ -91,7 +91,7 @@ public:
     }
 
 private:
-    AsteriskSCF::Bridge::V1::BridgedSessionState mState;   
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState mState;   
 };
 
 class StateMemberSelector
@@ -101,7 +101,7 @@ public:
         mWrapper(wrapper)
     {
     }
-    AsteriskSCF::Bridge::V1::BridgedSessionState select()
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState select()
     {
         return mWrapper->getBridgedSession()->currentState;
     }
diff --git a/src/SessionWrapper.cpp b/src/SessionWrapper.cpp
index 48ccfa8..c66b0f8 100644
--- a/src/SessionWrapper.cpp
+++ b/src/SessionWrapper.cpp
@@ -23,7 +23,7 @@
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::SessionCommunications::V1;
 using namespace AsteriskSCF::BridgeService;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace AsteriskSCF;
 using namespace std;
 
@@ -248,7 +248,7 @@ class SetStateTask : public QueuedTask
 {
 public:
     SetStateTask(const SessionWrapperPtr& session,
-            const AsteriskSCF::Bridge::V1::BridgedSessionState newState) :
+            const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState newState) :
         QueuedTask("SetStateTask"),
         mSession(session),
         mState(newState)
@@ -264,15 +264,15 @@ protected:
 
 private:
     SessionWrapperPtr mSession;
-    AsteriskSCF::Bridge::V1::BridgedSessionState mState;
-    AsteriskSCF::Bridge::V1::BridgedSessionState mOldState;
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState mState;
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState mOldState;
 };
 
 class SetStateFromTask : public QueuedTask
 {
 public:
     SetStateFromTask(const SessionWrapperPtr& session,
-            const AsteriskSCF::Bridge::V1::BridgedSessionState newState,
+            const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState newState,
             const StateSet& startStates) :
         QueuedTask("SetStateFromTask"),
         mSession(session),
@@ -294,8 +294,8 @@ protected:
 
 private:
     SessionWrapperPtr mSession;
-    AsteriskSCF::Bridge::V1::BridgedSessionState mState;
-    AsteriskSCF::Bridge::V1::BridgedSessionState mOldState;
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState mState;
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState mOldState;
     StateSet mStartStates;
 };
 
@@ -359,11 +359,11 @@ QueuedTasks createShutdownTasks(const SessionWrapperPtr& session, const SessionL
     // queue from continuing if the session is already connected or done.
     //
     StateSet statesToContinueOn;
-    statesToContinueOn.insert(::AsteriskSCF::Bridge::V1::Added);
-    statesToContinueOn.insert(::AsteriskSCF::Bridge::V1::Connected);
+    statesToContinueOn.insert(::AsteriskSCF::Replication::BridgeService::V1::Added);
+    statesToContinueOn.insert(::AsteriskSCF::Replication::BridgeService::V1::Connected);
 
     QueuedTasks tasks;
-    tasks.push_back(new SetStateFromTask(session, ::AsteriskSCF::Bridge::V1::Disconnected, statesToContinueOn));
+    tasks.push_back(new SetStateFromTask(session, ::AsteriskSCF::Replication::BridgeService::V1::Disconnected, statesToContinueOn));
     if (code)
     {
         tasks.push_back(new RemoveBridgeTask(session, listener, true));
@@ -376,7 +376,7 @@ QueuedTasks createShutdownTasks(const SessionWrapperPtr& session, const SessionL
 QueuedTasks createSetupTasks(const SessionWrapperPtr& session)
 {
     QueuedTasks tasks;
-    tasks.push_back(new SetStateTask(session, ::AsteriskSCF::Bridge::V1::Connected));
+    tasks.push_back(new SetStateTask(session, ::AsteriskSCF::Replication::BridgeService::V1::Connected));
     tasks.push_back(new ConnectMediaTask(session));
     return tasks;
 }
@@ -591,11 +591,11 @@ void SessionWrapper::shutdown(const SessionListenerPrx& listener, const Response
     // shutdownRunner->start();
 }
 
-AsteriskSCF::Bridge::V1::BridgedSessionState SessionWrapper::setState(const AsteriskSCF::Bridge::V1::BridgedSessionState newState)
+AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState SessionWrapper::setState(const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState newState)
 {
     mLogger(Debug) << FUNLOG << ": updating state " << mId;
     BridgedSessionPtr copyOfNewState;
-    AsteriskSCF::Bridge::V1::BridgedSessionState oldState;
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState oldState;
     {
         boost::unique_lock<boost::shared_mutex> lock(mLock);
         oldState = mSession->currentState;
diff --git a/src/SessionWrapper.h b/src/SessionWrapper.h
index e0a8835..9ddb43c 100644
--- a/src/SessionWrapper.h
+++ b/src/SessionWrapper.h
@@ -30,7 +30,7 @@ namespace BridgeService
 class SessionWrapper : public Ice::LocalObject
 {
 public:
-    SessionWrapper(const AsteriskSCF::Bridge::V1::BridgedSessionPtr& session,
+    SessionWrapper(const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionPtr& session,
             const MediaSplicerPtr& splicer,
             const AsteriskSCF::BridgeService::ReplicatorSmartPrx& replicator,
             const AsteriskSCF::System::Logging::Logger& logger);
@@ -70,7 +70,7 @@ public:
      * creates a copy of the BridgedSession object.
      * Does not initiate replication.
      **/
-    AsteriskSCF::Bridge::V1::BridgedSessionPtr getBridgedSession() const;
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionPtr getBridgedSession() const;
 
     /**
      * Accesses the session proxy itself that is part of this session.
@@ -87,7 +87,7 @@ public:
      **/
     void setupMedia();
     void setConnector(const MediaConnectorPtr& connector);
-    void updateMedia(const AsteriskSCF::Bridge::V1::SessionPairingPtr& pairings);
+    void updateMedia(const AsteriskSCF::Replication::BridgeService::V1::SessionPairingPtr& pairings);
 
     /**
      * Frees connection related resources.
@@ -99,7 +99,7 @@ public:
      * Updates the contents of this session with replica updates. This should
      * not be called unless this session is hosted by a standby service.
      **/
-    void update(const AsteriskSCF::Bridge::V1::BridgedSessionPtr& update);
+    void update(const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionPtr& update);
 
     /**
      * Marks this wrapper as "done" and ready to be cleaned up.
@@ -127,7 +127,7 @@ public:
     //
     // TODO: Refactor so these methods don't need to be exposed.
     //
-    AsteriskSCF::Bridge::V1::BridgedSessionState setState(const AsteriskSCF::Bridge::V1::BridgedSessionState newState);
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState setState(const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionState newState);
 
     /**
      * Disconnection helper.
@@ -137,7 +137,7 @@ public:
 private:
 
     mutable boost::shared_mutex mLock;
-    AsteriskSCF::Bridge::V1::BridgedSessionPtr mSession;
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionPtr mSession;
     AsteriskSCF::BridgeService::ReplicatorSmartPrx mReplicator;
     MediaConnectorPtr mConnector;
     AsteriskSCF::System::Logging::Logger mLogger;
@@ -149,10 +149,10 @@ private:
      * Sends changes to the replication service. This should never occur
      * unless the host service is active.
      **/
-    void pushUpdate(const AsteriskSCF::Bridge::V1::BridgedSessionPtr& update);
+    void pushUpdate(const AsteriskSCF::Replication::BridgeService::V1::BridgedSessionPtr& update);
 
 
-    AsteriskSCF::Bridge::V1::BridgedSessionPtr createUpdate();
+    AsteriskSCF::Replication::BridgeService::V1::BridgedSessionPtr createUpdate();
 };
 
 typedef IceUtil::Handle<SessionWrapper> SessionWrapperPtr;
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 1d3acf7..a770dfa 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -14,7 +14,7 @@ astscf_component_add_files(bridge_component_test BridgeManagerListenerI.h)
 astscf_component_add_files(bridge_component_test BridgeManagerListenerI.cpp)
 astscf_component_add_files(bridge_component_test TestCommandDriver.cpp)
 astscf_component_add_files(bridge_component_test TestCommandDriver.h)
-astscf_component_add_slices(bridge_component_test PROJECT BridgeReplicatorIf.ice)
+astscf_component_add_slices(bridge_component_test PROJECT AsteriskSCF/Replication/BridgeService/BridgeReplicatorIf.ice)
 astscf_component_add_ice_libraries(bridge_component_test IceStorm)
 astscf_component_add_ice_libraries(bridge_component_test IceBox)
 astscf_component_add_boost_libraries(bridge_component_test unit_test_framework thread)
@@ -24,7 +24,7 @@ target_link_libraries(bridge_component_test logging-client)
 astscf_test_icebox(bridge_component_test config/test_bridging.conf)
 
 astscf_component_init(bridge_unit_tests)
-astscf_component_add_slices(bridge_unit_tests PROJECT BridgeReplicatorIf.ice)
+astscf_component_add_slices(bridge_unit_tests PROJECT AsteriskSCF/Replication/BridgeService/BridgeReplicatorIf.ice)
 astscf_component_add_files(bridge_unit_tests ../src/SessionCollection.cpp)
 astscf_component_add_files(bridge_unit_tests ../src/SessionOperations.cpp)
 astscf_component_add_files(bridge_unit_tests ../src/SessionWrapper.cpp)
diff --git a/test/UnitTests.cpp b/test/UnitTests.cpp
index b3bfcef..8a8ebb7 100644
--- a/test/UnitTests.cpp
+++ b/test/UnitTests.cpp
@@ -32,7 +32,7 @@
 
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::SessionCommunications::V1;
-using namespace AsteriskSCF::Bridge::V1;
+using namespace AsteriskSCF::Replication::BridgeService::V1;
 using namespace AsteriskSCF::BridgeService;
 using namespace std;
 

commit f9b734a3cfed335135ded07351687875e59f718f
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Tue Jun 14 17:24:31 2011 -0500

    Use Slice collections support in AsteriskSCF.cmake.

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c3ba1c2..0b46805 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,4 +1,3 @@
-include_directories(${API_INCLUDE_DIR})
 include_directories(${logger_dir}/include)
 include_directories(${ice-util-cpp_dir}/include)
 
@@ -33,6 +32,7 @@ astscf_component_add_files(bridgeservice ListenerManager.h)
 astscf_component_add_slices(bridgeservice PROJECT BridgeReplicatorIf.ice)
 astscf_component_add_ice_libraries(bridgeservice IceStorm)
 astscf_component_add_boost_libraries(bridgeservice thread date_time)
+astscf_component_add_slice_collection_libraries(bridgeservice ASTSCF)
 astscf_component_build_icebox(bridgeservice)
 target_link_libraries(bridgeservice logging-client)
 astscf_component_install(bridgeservice)
@@ -42,7 +42,7 @@ astscf_component_add_files(BridgeReplicator BridgeReplicatorService.cpp)
 astscf_component_add_slices(BridgeReplicator PROJECT BridgeReplicatorIf.ice)
 astscf_component_add_ice_libraries(BridgeReplicator IceStorm)
 astscf_component_add_boost_libraries(BridgeReplicator thread date_time)
+astscf_component_add_slice_collection_libraries(BridgeReplicator ASTSCF)
 astscf_component_build_icebox(BridgeReplicator)
 target_link_libraries(BridgeReplicator logging-client)
-target_link_libraries(BridgeReplicator astscf-api)
 astscf_component_install(BridgeReplicator)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index ebefc73..1d3acf7 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,14 +1,12 @@
-include_directories(${API_INCLUDE_DIR})
 include_directories(${logger_dir}/include)
 include_directories(${ice-util-cpp_dir}/include)
-include_directories(${TEST_CHANNEL_API_INCLUDE_DIR})
 
 include_directories("../src")
 
-astscf_slice_collection(TEST_CHANNEL ${CMAKE_CURRENT_SOURCE_DIR}/../../test_channel/slice)
+astscf_slice_include_collection(TEST_CHANNEL)
 
 astscf_component_init(bridge_component_test)
-astscf_component_add_slices(bridge_component_test TEST_CHANNEL CommandsIf.ice)
+astscf_component_add_slices(bridge_component_test TEST_CHANNEL AsteriskSCF/TestChannel/CommandsIf.ice)
 astscf_component_add_files(bridge_component_test TestBridging.cpp)
 astscf_component_add_files(bridge_component_test BridgeListenerI.h)
 astscf_component_add_files(bridge_component_test BridgeListenerI.cpp)
@@ -20,8 +18,9 @@ astscf_component_add_slices(bridge_component_test PROJECT BridgeReplicatorIf.ice
 astscf_component_add_ice_libraries(bridge_component_test IceStorm)
 astscf_component_add_ice_libraries(bridge_component_test IceBox)
 astscf_component_add_boost_libraries(bridge_component_test unit_test_framework thread)
+astscf_component_add_slice_collection_libraries(bridge_component_test ASTSCF TEST_CHANNEL)
 astscf_component_build_icebox(bridge_component_test)
-target_link_libraries(bridge_component_test logging-client astscf-api test-channel-api)
+target_link_libraries(bridge_component_test logging-client)
 astscf_test_icebox(bridge_component_test config/test_bridging.conf)
 
 astscf_component_init(bridge_unit_tests)
@@ -33,6 +32,7 @@ astscf_component_add_files(bridge_unit_tests ../src/MediaSplicer.cpp)
 astscf_component_add_files(bridge_unit_tests UnitTests.cpp)
 astscf_component_add_ice_libraries(bridge_unit_tests Ice)
 astscf_component_add_boost_libraries(bridge_unit_tests unit_test_framework thread)
+astscf_component_add_slice_collection_libraries(bridge_unit_tests ASTSCF)
 astscf_component_build_standalone(bridge_unit_tests)
-target_link_libraries(bridge_unit_tests logging-client astscf-api)
+target_link_libraries(bridge_unit_tests logging-client)
 astscf_test_boost(bridge_unit_tests)

commit 7b3e6553054734794066b5e36680a658283f1837
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Mon Jun 6 18:50:26 2011 -0500

    Slice collections, and consistency of naming in various places.
    
    * Support Slice file 'collections'.
    
    * Make all Slice directories in repositories be called 'slice' and at the
      top level in the repository, so the automatic 'PROJECT' collection will
      be generated for them.
    
    * Build ice-util-cpp and util-cpp as single libraries.
    
    * Enable building and execution of ice-util-cpp top-level unit tests.
    
    Conflicts:
    
    	cmake/example/CMakeLists.txt

diff --git a/src/BridgeReplicatorIf.ice b/slice/BridgeReplicatorIf.ice
similarity index 100%
rename from src/BridgeReplicatorIf.ice
rename to slice/BridgeReplicatorIf.ice
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 22a5b9f..c3ba1c2 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -2,50 +2,47 @@ include_directories(${API_INCLUDE_DIR})
 include_directories(${logger_dir}/include)
 include_directories(${ice-util-cpp_dir}/include)
 
-astscf_slice_include_directories(${API_SLICE_DIR})
-
 astscf_component_init(bridgeservice)
-astscf_component_add_file(bridgeservice Service.cpp)
-astscf_component_add_file(bridgeservice BridgeImpl.h)
-astscf_component_add_file(bridgeservice BridgeImpl.cpp)
-astscf_component_add_file(bridgeservice BridgeListenerMgr.h)
-astscf_component_add_file(bridgeservice BridgeListenerMgr.cpp)
-astscf_component_add_file(bridgeservice BridgeManagerListenerMgr.h)
-astscf_component_add_file(bridgeservice BridgeManagerListenerMgr.cpp)
-astscf_component_add_file(bridgeservice BridgeReplicatorStateListenerI.h)
-astscf_component_add_file(bridgeservice BridgeReplicatorStateListenerI.cpp)
-astscf_component_add_file(bridgeservice BridgeManagerImpl.h)
-astscf_component_add_file(bridgeservice BridgeManagerImpl.cpp)
-astscf_component_add_file(bridgeservice SessionListener.cpp)
-astscf_component_add_file(bridgeservice SessionListener.h)
-astscf_component_add_file(bridgeservice SessionWrapper.cpp)
-astscf_component_add_file(bridgeservice SessionWrapper.h)
-astscf_component_add_file(bridgeservice SessionCollection.cpp)
-astscf_component_add_file(bridgeservice SessionCollection.h)
-astscf_component_add_file(bridgeservice SessionOperations.cpp)
-astscf_component_add_file(bridgeservice SessionOperations.h)
-astscf_component_add_file(bridgeservice ServiceUtil.h)
-astscf_component_add_file(bridgeservice DebugUtil.h)
-astscf_component_add_file(bridgeservice MediaSplicer.h)
-astscf_component_add_file(bridgeservice MediaSplicer.cpp)
-astscf_component_add_file(bridgeservice Tasks.h)
-astscf_component_add_file(bridgeservice InternalExceptions.h)
-astscf_component_add_file(bridgeservice BridgeServiceConfig.h)
-astscf_component_add_file(bridgeservice ListenerManager.h)
-astscf_component_add_slice(bridgeservice ./BridgeReplicatorIf.ice)
+astscf_component_add_files(bridgeservice Service.cpp)
+astscf_component_add_files(bridgeservice BridgeImpl.h)
+astscf_component_add_files(bridgeservice BridgeImpl.cpp)
+astscf_component_add_files(bridgeservice BridgeListenerMgr.h)
+astscf_component_add_files(bridgeservice BridgeListenerMgr.cpp)
+astscf_component_add_files(bridgeservice BridgeManagerListenerMgr.h)
+astscf_component_add_files(bridgeservice BridgeManagerListenerMgr.cpp)
+astscf_component_add_files(bridgeservice BridgeReplicatorStateListenerI.h)
+astscf_component_add_files(bridgeservice BridgeReplicatorStateListenerI.cpp)
+astscf_component_add_files(bridgeservice BridgeManagerImpl.h)
+astscf_component_add_files(bridgeservice BridgeManagerImpl.cpp)
+astscf_component_add_files(bridgeservice SessionListener.cpp)
+astscf_component_add_files(bridgeservice SessionListener.h)
+astscf_component_add_files(bridgeservice SessionWrapper.cpp)
+astscf_component_add_files(bridgeservice SessionWrapper.h)
+astscf_component_add_files(bridgeservice SessionCollection.cpp)
+astscf_component_add_files(bridgeservice SessionCollection.h)
+astscf_component_add_files(bridgeservice SessionOperations.cpp)
+astscf_component_add_files(bridgeservice SessionOperations.h)
+astscf_component_add_files(bridgeservice ServiceUtil.h)
+astscf_component_add_files(bridgeservice DebugUtil.h)
+astscf_component_add_files(bridgeservice MediaSplicer.h)
+astscf_component_add_files(bridgeservice MediaSplicer.cpp)
+astscf_component_add_files(bridgeservice Tasks.h)
+astscf_component_add_files(bridgeservice InternalExceptions.h)
+astscf_component_add_files(bridgeservice BridgeServiceConfig.h)
+astscf_component_add_files(bridgeservice ListenerManager.h)
+astscf_component_add_slices(bridgeservice PROJECT BridgeReplicatorIf.ice)
 astscf_component_add_ice_libraries(bridgeservice IceStorm)
-astscf_component_add_ice_libraries(bridgeservice IceBox)
 astscf_component_add_boost_libraries(bridgeservice thread date_time)
 astscf_component_build_icebox(bridgeservice)
 target_link_libraries(bridgeservice logging-client)
 astscf_component_install(bridgeservice)
 
 astscf_component_init(BridgeReplicator)
-astscf_component_add_file(BridgeReplicator BridgeReplicatorService.cpp)
-astscf_component_add_slice(BridgeReplicator ./BridgeReplicatorIf.ice)
+astscf_component_add_files(BridgeReplicator BridgeReplicatorService.cpp)
+astscf_component_add_slices(BridgeReplicator PROJECT BridgeReplicatorIf.ice)
 astscf_component_add_ice_libraries(BridgeReplicator IceStorm)
 astscf_component_add_boost_libraries(BridgeReplicator thread date_time)
 astscf_component_build_icebox(BridgeReplicator)
 target_link_libraries(BridgeReplicator logging-client)
-target_link_libraries(BridgeReplicator asterisk-scf-api)
+target_link_libraries(BridgeReplicator astscf-api)
 astscf_component_install(BridgeReplicator)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index dee7b9d..ebefc73 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,42 +1,38 @@
 include_directories(${API_INCLUDE_DIR})
 include_directories(${logger_dir}/include)
 include_directories(${ice-util-cpp_dir}/include)
-
-astscf_slice_include_directories(${API_SLICE_DIR})
+include_directories(${TEST_CHANNEL_API_INCLUDE_DIR})
 
 include_directories("../src")
 
-include_directories(${CMAKE_CURRENT_BINARY_DIR}/../../test_channel/local_slice/generated)
+astscf_slice_collection(TEST_CHANNEL ${CMAKE_CURRENT_SOURCE_DIR}/../../test_channel/slice)
 
 astscf_component_init(bridge_component_test)
-astscf_component_add_slice(bridge_component_test CommandsIf)
-astscf_component_add_file(bridge_component_test TestBridging.cpp)
-astscf_component_add_file(bridge_component_test BridgeListenerI.h)
-astscf_component_add_file(bridge_component_test BridgeListenerI.cpp)
-astscf_component_add_file(bridge_component_test BridgeManagerListenerI.h)
-astscf_component_add_file(bridge_component_test BridgeManagerListenerI.cpp)
-astscf_component_add_file(bridge_component_test TestCommandDriver.cpp)
-astscf_component_add_file(bridge_component_test TestCommandDriver.h)
-astscf_component_add_slice(bridge_component_test ../src/BridgeReplicatorIf.ice)
+astscf_component_add_slices(bridge_component_test TEST_CHANNEL CommandsIf.ice)
+astscf_component_add_files(bridge_component_test TestBridging.cpp)
+astscf_component_add_files(bridge_component_test BridgeListenerI.h)
+astscf_component_add_files(bridge_component_test BridgeListenerI.cpp)
+astscf_component_add_files(bridge_component_test BridgeManagerListenerI.h)
+astscf_component_add_files(bridge_component_test BridgeManagerListenerI.cpp)
+astscf_component_add_files(bridge_component_test TestCommandDriver.cpp)
+astscf_component_add_files(bridge_component_test TestCommandDriver.h)
+astscf_component_add_slices(bridge_component_test PROJECT BridgeReplicatorIf.ice)
 astscf_component_add_ice_libraries(bridge_component_test IceStorm)
 astscf_component_add_ice_libraries(bridge_component_test IceBox)
 astscf_component_add_boost_libraries(bridge_component_test unit_test_framework thread)
 astscf_component_build_icebox(bridge_component_test)
-target_link_libraries(bridge_component_test logging-client)
-target_link_libraries(bridge_component_test asterisk-scf-api)
-target_link_libraries(bridge_component_test test-channel-api)
+target_link_libraries(bridge_component_test logging-client astscf-api test-channel-api)
 astscf_test_icebox(bridge_component_test config/test_bridging.conf)
 
 astscf_component_init(bridge_unit_tests)
-astscf_component_add_slice(bridge_unit_tests ../src/BridgeReplicatorIf.ice)
-astscf_component_add_file(bridge_unit_tests ../src/SessionCollection.cpp)
-astscf_component_add_file(bridge_unit_tests ../src/SessionOperations.cpp)
-astscf_component_add_file(bridge_unit_tests ../src/SessionWrapper.cpp)
-astscf_component_add_file(bridge_unit_tests ../src/MediaSplicer.cpp)
-astscf_component_add_file(bridge_unit_tests UnitTests.cpp)
+astscf_component_add_slices(bridge_unit_tests PROJECT BridgeReplicatorIf.ice)
+astscf_component_add_files(bridge_unit_tests ../src/SessionCollection.cpp)
+astscf_component_add_files(bridge_unit_tests ../src/SessionOperations.cpp)
+astscf_component_add_files(bridge_unit_tests ../src/SessionWrapper.cpp)
+astscf_component_add_files(bridge_unit_tests ../src/MediaSplicer.cpp)
+astscf_component_add_files(bridge_unit_tests UnitTests.cpp)
 astscf_component_add_ice_libraries(bridge_unit_tests Ice)
 astscf_component_add_boost_libraries(bridge_unit_tests unit_test_framework thread)
 astscf_component_build_standalone(bridge_unit_tests)
-target_link_libraries(bridge_unit_tests logging-client)
-target_link_libraries(bridge_unit_tests asterisk-scf-api)
+target_link_libraries(bridge_unit_tests logging-client astscf-api)
 astscf_test_boost(bridge_unit_tests)

commit de613db351cda98535a414807c3429852cd724b2
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Fri Jun 3 15:20:33 2011 -0500

    Accommodate change from ASTERISK_SCF_ICEBOX_EXPORT to ASTSCF_DLL_EXPORT.

diff --git a/src/BridgeReplicatorService.cpp b/src/BridgeReplicatorService.cpp
index 6bda816..e672287 100644
--- a/src/BridgeReplicatorService.cpp
+++ b/src/BridgeReplicatorService.cpp
@@ -190,7 +190,7 @@ void BridgeReplicatorApp::stop()
 }
 
 extern "C" {
-ASTERISK_SCF_ICEBOX_EXPORT ::IceBox::Service* create(Ice::CommunicatorPtr)
+ASTSCF_DLL_EXPORT ::IceBox::Service* create(Ice::CommunicatorPtr)
 {
     return new BridgeReplicatorApp;
 }
diff --git a/src/Service.cpp b/src/Service.cpp
index addafb4..451ed60 100644
--- a/src/Service.cpp
+++ b/src/Service.cpp
@@ -334,7 +334,7 @@ void BridgingApp::stop()
 }
 
 extern "C" {
-ASTERISK_SCF_ICEBOX_EXPORT ::IceBox::Service* create(Ice::CommunicatorPtr)
+ASTSCF_DLL_EXPORT ::IceBox::Service* create(Ice::CommunicatorPtr)
 {
     return new BridgingApp;
 }
diff --git a/test/TestBridging.cpp b/test/TestBridging.cpp
index f5569e9..82edf8d 100644
--- a/test/TestBridging.cpp
+++ b/test/TestBridging.cpp
@@ -925,7 +925,7 @@ private:
 }
 
 extern "C" {
-ASTERISK_SCF_ICEBOX_EXPORT ::IceBox::Service* create(Ice::CommunicatorPtr)
+ASTSCF_DLL_EXPORT ::IceBox::Service* create(Ice::CommunicatorPtr)
 {
     return new TestService;
 }

commit b7ae201969cca9bfd117798089b862a125301192
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Thu Jun 2 18:02:07 2011 -0500

    Update to use 'astscf' prefix in CMake scripts instead of 'asterisk_scf'.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 94ef319..77d9be5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-asterisk_scf_project(BridgingService 3.4)
+astscf_project(BridgingService 3.4)
 
 add_subdirectory(src)
 if(BUILD_TESTING)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f2c83c3..22a5b9f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -2,50 +2,50 @@ include_directories(${API_INCLUDE_DIR})
 include_directories(${logger_dir}/include)
 include_directories(${ice-util-cpp_dir}/include)
 
-asterisk_scf_slice_include_directories(${API_SLICE_DIR})
+astscf_slice_include_directories(${API_SLICE_DIR})
 
-asterisk_scf_component_init(bridgeservice)
-asterisk_scf_component_add_file(bridgeservice Service.cpp)
-asterisk_scf_component_add_file(bridgeservice BridgeImpl.h)
-asterisk_scf_component_add_file(bridgeservice BridgeImpl.cpp)
-asterisk_scf_component_add_file(bridgeservice BridgeListenerMgr.h)
-asterisk_scf_component_add_file(bridgeservice BridgeListenerMgr.cpp)
-asterisk_scf_component_add_file(bridgeservice BridgeManagerListenerMgr.h)
-asterisk_scf_component_add_file(bridgeservice BridgeManagerListenerMgr.cpp)
-asterisk_scf_component_add_file(bridgeservice BridgeReplicatorStateListenerI.h)
-asterisk_scf_component_add_file(bridgeservice BridgeReplicatorStateListenerI.cpp)
-asterisk_scf_component_add_file(bridgeservice BridgeManagerImpl.h)
-asterisk_scf_component_add_file(bridgeservice BridgeManagerImpl.cpp)
-asterisk_scf_component_add_file(bridgeservice SessionListener.cpp)
-asterisk_scf_component_add_file(bridgeservice SessionListener.h)
-asterisk_scf_component_add_file(bridgeservice SessionWrapper.cpp)
-asterisk_scf_component_add_file(bridgeservice SessionWrapper.h)
-asterisk_scf_component_add_file(bridgeservice SessionCollection.cpp)
-asterisk_scf_component_add_file(bridgeservice SessionCollection.h)
-asterisk_scf_component_add_file(bridgeservice SessionOperations.cpp)
-asterisk_scf_component_add_file(bridgeservice SessionOperations.h)
-asterisk_scf_component_add_file(bridgeservice ServiceUtil.h)
-asterisk_scf_component_add_file(bridgeservice DebugUtil.h)
-asterisk_scf_component_add_file(bridgeservice MediaSplicer.h)
-asterisk_scf_component_add_file(bridgeservice MediaSplicer.cpp)
-asterisk_scf_component_add_file(bridgeservice Tasks.h)
-asterisk_scf_component_add_file(bridgeservice InternalExceptions.h)
-asterisk_scf_component_add_file(bridgeservice BridgeServiceConfig.h)
-asterisk_scf_component_add_file(bridgeservice ListenerManager.h)
-asterisk_scf_component_add_slice(bridgeservice ./BridgeReplicatorIf.ice)
-asterisk_scf_component_add_ice_libraries(bridgeservice IceStorm)
-asterisk_scf_component_add_ice_libraries(bridgeservice IceBox)
-asterisk_scf_component_add_boost_libraries(bridgeservice thread date_time)
-asterisk_scf_component_build_icebox(bridgeservice)
+astscf_component_init(bridgeservice)
+astscf_component_add_file(bridgeservice Service.cpp)
+astscf_component_add_file(bridgeservice BridgeImpl.h)
+astscf_component_add_file(bridgeservice BridgeImpl.cpp)
+astscf_component_add_file(bridgeservice BridgeListenerMgr.h)
+astscf_component_add_file(bridgeservice BridgeListenerMgr.cpp)
+astscf_component_add_file(bridgeservice BridgeManagerListenerMgr.h)
+astscf_component_add_file(bridgeservice BridgeManagerListenerMgr.cpp)
+astscf_component_add_file(bridgeservice BridgeReplicatorStateListenerI.h)
+astscf_component_add_file(bridgeservice BridgeReplicatorStateListenerI.cpp)
+astscf_component_add_file(bridgeservice BridgeManagerImpl.h)
+astscf_component_add_file(bridgeservice BridgeManagerImpl.cpp)
+astscf_component_add_file(bridgeservice SessionListener.cpp)
+astscf_component_add_file(bridgeservice SessionListener.h)
+astscf_component_add_file(bridgeservice SessionWrapper.cpp)
+astscf_component_add_file(bridgeservice SessionWrapper.h)
+astscf_component_add_file(bridgeservice SessionCollection.cpp)
+astscf_component_add_file(bridgeservice SessionCollection.h)
+astscf_component_add_file(bridgeservice SessionOperations.cpp)
+astscf_component_add_file(bridgeservice SessionOperations.h)
+astscf_component_add_file(bridgeservice ServiceUtil.h)
+astscf_component_add_file(bridgeservice DebugUtil.h)
+astscf_component_add_file(bridgeservice MediaSplicer.h)
+astscf_component_add_file(bridgeservice MediaSplicer.cpp)
+astscf_component_add_file(bridgeservice Tasks.h)
+astscf_component_add_file(bridgeservice InternalExceptions.h)
+astscf_component_add_file(bridgeservice BridgeServiceConfig.h)
+astscf_component_add_file(bridgeservice ListenerManager.h)
+astscf_component_add_slice(bridgeservice ./BridgeReplicatorIf.ice)
+astscf_component_add_ice_libraries(bridgeservice IceStorm)
+astscf_component_add_ice_libraries(bridgeservice IceBox)
+astscf_component_add_boost_libraries(bridgeservice thread date_time)
+astscf_component_build_icebox(bridgeservice)
 target_link_libraries(bridgeservice logging-client)
-asterisk_scf_component_install(bridgeservice)
+astscf_component_install(bridgeservice)
 
-asterisk_scf_component_init(BridgeReplicator)
-asterisk_scf_component_add_file(BridgeReplicator BridgeReplicatorService.cpp)
-asterisk_scf_component_add_slice(BridgeReplicator ./BridgeReplicatorIf.ice)
-asterisk_scf_component_add_ice_libraries(BridgeReplicator IceStorm)
-asterisk_scf_component_add_boost_libraries(BridgeReplicator thread date_time)
-asterisk_scf_component_build_icebox(BridgeReplicator)
+astscf_component_init(BridgeReplicator)
+astscf_component_add_file(BridgeReplicator BridgeReplicatorService.cpp)
+astscf_component_add_slice(BridgeReplicator ./BridgeReplicatorIf.ice)
+astscf_component_add_ice_libraries(BridgeReplicator IceStorm)
+astscf_component_add_boost_libraries(BridgeReplicator thread date_time)
+astscf_component_build_icebox(BridgeReplicator)
 target_link_libraries(BridgeReplicator logging-client)
 target_link_libraries(BridgeReplicator asterisk-scf-api)
-asterisk_scf_component_install(BridgeReplicator)
+astscf_component_install(BridgeReplicator)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index b06bf75..dee7b9d 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -2,41 +2,41 @@ include_directories(${API_INCLUDE_DIR})
 include_directories(${logger_dir}/include)
 include_directories(${ice-util-cpp_dir}/include)
 
-asterisk_scf_slice_include_directories(${API_SLICE_DIR})
+astscf_slice_include_directories(${API_SLICE_DIR})
 
 include_directories("../src")
 
 include_directories(${CMAKE_CURRENT_BINARY_DIR}/../../test_channel/local_slice/generated)
 
-asterisk_scf_component_init(bridge_component_test)
-asterisk_scf_component_add_slice(bridge_component_test CommandsIf)
-asterisk_scf_component_add_file(bridge_component_test TestBridging.cpp)
-asterisk_scf_component_add_file(bridge_component_test BridgeListenerI.h)
-asterisk_scf_component_add_file(bridge_component_test BridgeListenerI.cpp)
-asterisk_scf_component_add_file(bridge_component_test BridgeManagerListenerI.h)
-asterisk_scf_component_add_file(bridge_component_test BridgeManagerListenerI.cpp)
-asterisk_scf_component_add_file(bridge_component_test TestCommandDriver.cpp)
-asterisk_scf_component_add_file(bridge_component_test TestCommandDriver.h)
-asterisk_scf_component_add_slice(bridge_component_test ../src/BridgeReplicatorIf.ice)
-asterisk_scf_component_add_ice_libraries(bridge_component_test IceStorm)
-asterisk_scf_component_add_ice_libraries(bridge_component_test IceBox)
-asterisk_scf_component_add_boost_libraries(bridge_component_test unit_test_framework thread)
-asterisk_scf_component_build_icebox(bridge_component_test)
+astscf_component_init(bridge_component_test)
+astscf_component_add_slice(bridge_component_test CommandsIf)
+astscf_component_add_file(bridge_component_test TestBridging.cpp)
+astscf_component_add_file(bridge_component_test BridgeListenerI.h)
+astscf_component_add_file(bridge_component_test BridgeListenerI.cpp)
+astscf_component_add_file(bridge_component_test BridgeManagerListenerI.h)
+astscf_component_add_file(bridge_component_test BridgeManagerListenerI.cpp)
+astscf_component_add_file(bridge_component_test TestCommandDriver.cpp)
+astscf_component_add_file(bridge_component_test TestCommandDriver.h)
+astscf_component_add_slice(bridge_component_test ../src/BridgeReplicatorIf.ice)
+astscf_component_add_ice_libraries(bridge_component_test IceStorm)
+astscf_component_add_ice_libraries(bridge_component_test IceBox)
+astscf_component_add_boost_libraries(bridge_component_test unit_test_framework thread)
+astscf_component_build_icebox(bridge_component_test)
 target_link_libraries(bridge_component_test logging-client)
 target_link_libraries(bridge_component_test asterisk-scf-api)
 target_link_libraries(bridge_component_test test-channel-api)
-asterisk_scf_test_icebox(bridge_component_test config/test_bridging.conf)
+astscf_test_icebox(bridge_component_test config/test_bridging.conf)
 
-asterisk_scf_component_init(bridge_unit_tests)
-asterisk_scf_component_add_slice(bridge_unit_tests ../src/BridgeReplicatorIf.ice)
-asterisk_scf_component_add_file(bridge_unit_tests ../src/SessionCollection.cpp)
-asterisk_scf_component_add_file(bridge_unit_tests ../src/SessionOperations.cpp)
-asterisk_scf_component_add_file(bridge_unit_tests ../src/SessionWrapper.cpp)
-asterisk_scf_component_add_file(bridge_unit_tests ../src/MediaSplicer.cpp)
-asterisk_scf_component_add_file(bridge_unit_tests UnitTests.cpp)
-asterisk_scf_component_add_ice_libraries(bridge_unit_tests Ice)
-asterisk_scf_component_add_boost_libraries(bridge_unit_tests unit_test_framework thread)
-asterisk_scf_component_build_standalone(bridge_unit_tests)
+astscf_component_init(bridge_unit_tests)
+astscf_component_add_slice(bridge_unit_tests ../src/BridgeReplicatorIf.ice)
+astscf_component_add_file(bridge_unit_tests ../src/SessionCollection.cpp)
+astscf_component_add_file(bridge_unit_tests ../src/SessionOperations.cpp)
+astscf_component_add_file(bridge_unit_tests ../src/SessionWrapper.cpp)
+astscf_component_add_file(bridge_unit_tests ../src/MediaSplicer.cpp)
+astscf_component_add_file(bridge_unit_tests UnitTests.cpp)
+astscf_component_add_ice_libraries(bridge_unit_tests Ice)
+astscf_component_add_boost_libraries(bridge_unit_tests unit_test_framework thread)
+astscf_component_build_standalone(bridge_unit_tests)
 target_link_libraries(bridge_unit_tests logging-client)
 target_link_libraries(bridge_unit_tests asterisk-scf-api)
-asterisk_scf_test_boost(bridge_unit_tests)
+astscf_test_boost(bridge_unit_tests)

commit 32886356a5bcd59234a75f9c7308c80ffb6a4576
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Thu Jun 2 16:04:55 2011 -0500

    Allow user to disable building of tests.
    
    The CTest module offers a BUILD_TESTING option; if the user turns this option
    off, we shouldn't bother building any of our tests.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6d12705..94ef319 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,6 @@
 asterisk_scf_project(BridgingService 3.4)
 
 add_subdirectory(src)
-add_subdirectory(test)
+if(BUILD_TESTING)
+  add_subdirectory(test)
+endif()

commit 720b682894560773ab7fc778be19612e055e30b6
Author: Kevin P. Fleming <kpfleming at digium.com>
Date:   Thu Jun 2 15:10:30 2011 -0500

    Remove directories used for submodules.

diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index bf532f0..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,12 +0,0 @@
-[submodule "slice"]
-	path = slice
-	url = ../../integration/slice
-[submodule "cmake"]
-	path = cmake
-	url = ../../release/cmake
-[submodule "test/channel_driver"]
-	path = test/channel_driver
-	url = ../../integration/test_channel
-[submodule "logger"]
-	path = logger
-	url = git at git.asterisk.org:asterisk-scf/integration/logger
diff --git a/cmake b/cmake
deleted file mode 160000
index cd39ae8..0000000
--- a/cmake
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit cd39ae824f03a19dc934709caee21e930f3b9988
diff --git a/logger b/logger
deleted file mode 160000
index e376034..0000000
--- a/logger
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit e376034d1791e30821dc5f37bd64fd155643d478
diff --git a/slice b/slice
deleted file mode 160000
index 71b02b7..0000000
--- a/slice
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 71b02b7071eab51d417f059566dc4aef1ebc2f2f
diff --git a/test/channel_driver b/test/channel_driver
deleted file mode 160000
index 6f7bcf6..0000000
--- a/test/channel_driver
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 6f7bcf618f587e939743eb987af205bb5d114835

commit bc05637e28f4adb42614f4e57634cf60f84feb59
Merge: 498aeb2 6cffd17
Author: Mark Michelson <mmichelson at digium.com>
Date:   Tue Jun 21 13:02:08 2011 -0500

    Merge branch 'master' of git.asterisk.org:asterisk-scf/release/bridging


commit 498aeb205671b7bc759683445852d2cb2628fd80
Author: Mark Michelson <mmichelson at digium.com>
Date:   Tue Jun 21 13:01:10 2011 -0500

    Add try-catch block around state replicator call in the bridge manager.

diff --git a/src/BridgeManagerImpl.cpp b/src/BridgeManagerImpl.cpp
index be58b67..f2696c0 100644
--- a/src/BridgeManagerImpl.cpp
+++ b/src/BridgeManagerImpl.cpp
@@ -460,7 +460,14 @@ void BridgeManagerImpl::update()
         ++mState->serial;
         ReplicatedStateItemSeq seq;
         seq.push_back(getState());
-        mReplicator->setState(seq);
+        try
+        {
+            mReplicator->setState(seq);
+        }
+        catch (const Ice::Exception& ex)
+        {
+            mLogger(Warning) << "Caught exception while trying to replicate bridge manager state: " << ex.what();
+        }
     }
 }
 

commit 6cffd17652efd700c25edd84d66659d69681b78f
Author: Brent Eagles <beagles at digium.com>
Date:   Wed Jun 8 09:34:11 2011 -0230

    Have only the standby component register with the locator.

diff --git a/src/Service.cpp b/src/Service.cpp
index fd3fcd6..addafb4 100644
--- a/src/Service.cpp
+++ b/src/Service.cpp
@@ -63,6 +63,10 @@ public:
         {
             (*i)->activated(ReplicaPrx::uncheckedCast(mAdapter->createDirectProxy(mAdapter->getCommunicator()->stringToIdentity(mReplicaId))));
         }
+        //
+        // A nice thing to do here would be to refresh the proxy that is registered with the service locator. It may not
+        // have really changed (depends on the failover mechanism used) but in the event that it did...
+        //
         return true;
     }
 
@@ -274,23 +278,26 @@ void BridgingApp::start(const std::string& name, const Ice::CommunicatorPtr& com
         manager->activate();
     }
 
-    bool registered = false;
-    try
-    {
-        ServiceLocatorParamsPtr parameters(new ServiceLocatorParams);
-        parameters->category = BridgeServiceDiscoveryCategory;
-        mLocator = 
-            new LocatorRegistrationWrapper<BridgeManagerPrx>(communicator, serviceLocatorManagementProperty, bridgeManagerPrx, 
-               adapterName, parameters);
-        registered = mLocator->registerService();
-    }
-    catch (const Ice::Exception&)
-    {
-    }
-    if (!registered)
+    if (!onStandby)
     {
-        mRegisterThread = new RegisterThread<BridgeManagerPrx>(mLocator);
-        mRegisterThread->start();
+        bool registered = false;
+        try
+        {
+            ServiceLocatorParamsPtr parameters(new ServiceLocatorParams);
+            parameters->category = BridgeServiceDiscoveryCategory;
+            mLocator = 
+                new LocatorRegistrationWrapper<BridgeManagerPrx>(communicator, serviceLocatorManagementProperty, bridgeManagerPrx, 
+                        adapterName, parameters);
+            registered = mLocator->registerService();
+        }
+        catch (const Ice::Exception&)
+        {
+        }
+        if (!registered)
+        {
+            mRegisterThread = new RegisterThread<BridgeManagerPrx>(mLocator);
+            mRegisterThread->start();
+        }
     }
     //
     // TODO: We need to know whether or not to activate!

commit 6595950f2059c14dc1dbc40f3ba76d4a27d72fd5
Author: Brent Eagles <beagles at digium.com>
Date:   Mon Jun 6 12:17:40 2011 -0230

    Simplify disconnection of the media splicing. To avoid race conditions, a
    disconnection should not affect any of the other media sessions. The other
    media sessions will be progressively altered either by internal bridge
    operations or by the owning session itself.
    
    Modified the listener to included a proactive reap to clean out disconnected
    sessions.

diff --git a/src/MediaSplicer.cpp b/src/MediaSplicer.cpp
index 7812b64..1a631b6 100755
--- a/src/MediaSplicer.cpp
+++ b/src/MediaSplicer.cpp
@@ -133,36 +133,7 @@ public:
     void unplug()
     {
         mLogger(Debug) << FUNLOG << ": called.";
-        bool hadMedia = disconnectMedia();
-        if (!hadMedia)
-        {
-            mLogger(Debug) << FUNLOG << ": we did not have any media. Contacting the peer connector and telling it to disconnect!";
-            MediaConnectorPtr peer;
-            {
-                boost::unique_lock<boost::shared_mutex> lock(mLock);
-                peer = mPeer;
-                mPeer = 0;
-            }
-            if (peer)
-            {
-                peer->disconnectMedia();
-            }
-        }
-        else
-        {
-            mLogger(Debug) << FUNLOG << ": media connections unplugged. Let's forget about our peer connector now!";
-            MediaConnectorPtr peer;
-            {
-                boost::unique_lock<boost::shared_mutex> lock(mLock);
-                peer = mPeer;
-                mPeer = 0;
-            }
-            if (peer)
-            {
-                peer->clearConnections();
-            }
-            mPeer = 0;
-        }
+        disconnectMedia();
         mLogger(Debug) << FUNLOG << ": finished unplugging.";
         if (mReplicator)
         {
@@ -258,71 +229,54 @@ public:
     //
     void destroy()
     {
-        vector<OutgoingPairing> outgoing;
-        vector<IncomingPairing> incoming;
         SessionPairingPtr newState;
         {
             boost::unique_lock<boost::shared_mutex> lock(mLock);
-            outgoing = mOutgoing;
             mOutgoing.clear();
-            incoming = mIncoming;
             mIncoming.clear();
             mConnected = false;
             newState = createUpdate();
         }
         pushUpdate(newState);
-        if (outgoing.size() == 0 && incoming.size() == 0)
-        {
-            return;
-        }
         mLogger(Debug) << FUNLOG << ": unplugging sinks and sources";
 
         //
-        // Disconnect everybody, eating up exceptions in case things have gone away. This is a perfect spot
-        // for oneways. We don't care about errors when destroying. We still catch Ice::Exceptions though since
-        // a connection might be attempted, even on behalf of a oneway.
+        // NOTE: we used to talk to the peer and disconnect it too, but really
+        // that is fraught with danger when using non-synchronous or non-serial
+        // RPCs. We take the safe road and allow each connector to simply tell
+        // it's media session constituents to stop communicating with anything
+        // else. This also used to try one-ways, that's probably a bad idea too.
         //
-        for (vector<OutgoingPairing>::iterator i = outgoing.begin(); i != outgoing.end(); ++i)
+        try
         {
-            mLogger(Debug) << FUNLOG << ": disconnecting " << i->second->ice_toString() << " and "
-                           << i->first->ice_toString();
-
-            try
+            StreamSourceSeq sources = mMedia->getSources();
+            for (StreamSourceSeq::const_iterator i = sources.begin(); i != sources.end(); ++i)
             {
-                tryOneWay(i->second)->setSink(0);
-            }
-            catch (const Ice::Exception& ex)
-            {
-                mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
-            }
-            try
-            {
-                tryOneWay(i->first)->setSource(0);
+                try
+                {
+                    (*i)->setSink(StreamSinkPrx());
+                }
+                catch (const Ice::Exception& ex)
+                {
+                    mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
+                }
             }
-            catch (const Ice::Exception& ex)
+            StreamSinkSeq sinks = mMedia->getSinks();
+            for (StreamSinkSeq::const_iterator i = sinks.begin(); i != sinks.end(); ++i)
             {
-                mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
+                try
+                {
+                    (*i)->setSource(StreamSourcePrx());
+                }
+                catch (const Ice::Exception& ex)
+                {
+                    mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
+                }
             }
         }
-        for (vector<IncomingPairing>::iterator i = incoming.begin(); i != incoming.end(); ++i)
+        catch (const Ice::Exception& ex)
         {
-            mLogger(Debug) << FUNLOG << ": disconnecting " << i->first->ice_toString() << " and " << i->second->ice_toString();
-            try
-            {
-                tryOneWay(i->first)->setSink(0);
-            }
-            catch (const Ice::Exception& ex)
-            {
-                mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
-            }
-            try
-            {
-                tryOneWay(i->second)->setSource(0);
-            }
-            catch (const Ice::Exception& ex)
-            {
-                mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
-            }
+            mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
         }
     }
 
@@ -345,70 +299,56 @@ public:
     bool disconnectMedia()
     {
         mLogger(Debug) << FUNLOG << ": unplugging sinks and sources.";
-        vector<OutgoingPairing> outgoing;
-        vector<IncomingPairing> incoming;
         SessionPairingPtr newState;
         {
             boost::unique_lock<boost::shared_mutex> lock(mLock);
-            outgoing = mOutgoing;
             mOutgoing.clear();
-            incoming = mIncoming;
             mIncoming.clear();
             mConnected = false;
             newState = createUpdate();
         }
         pushUpdate(newState);
-        if (outgoing.size() == 0 && incoming.size() == 0)
-        {
-            return false;
-        }
         mLogger(Debug) << FUNLOG << ": unplugging sinks and sources";
 
         //
-        // TODO: Disconnect everybody, eating up exceptions in case things have gone away. This is a perfect spot for
-        // oneways or, at the very least, AMI.
+        // NOTE: we used to talk to the peer and disconnect it too, but really
+        // that is fraught with danger when using non-synchronous or non-serial
+        // RPCs. We take the safe road and allow each connector to simply tell
+        // it's media session constituents to stop communicating with anything
+        // else. This also used to try one-ways, that's probably a bad idea too.
         //
-        for (vector<OutgoingPairing>::iterator i = outgoing.begin(); i != outgoing.end(); ++i)
+        try
         {
-            mLogger(Debug) << FUNLOG << ": disconnecting " << i->second->ice_toString() << " and " << i->first->ice_toString();
-
-            try
-            {
-                i->second->setSink(0);
-            }
-            catch (const Ice::Exception& ex)
-            {
-                mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
-            }
-            try
+            StreamSourceSeq sources = mMedia->getSources();
+            for (StreamSourceSeq::const_iterator i = sources.begin(); i != sources.end(); ++i)
             {
-                i->first->setSource(0);
+                try
+                {
+                    (*i)->setSink(StreamSinkPrx());
+                }
+                catch (const Ice::Exception& ex)
+                {
+                    mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
+                }
             }
-            catch (const Ice::Exception& ex)
+            StreamSinkSeq sinks = mMedia->getSinks();
+            for (StreamSinkSeq::const_iterator i = sinks.begin(); i != sinks.end(); ++i)
             {
-                mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
+                try
+                {
+                    (*i)->setSource(StreamSourcePrx());
+                }
+                catch (const Ice::Exception& ex)
+                {
+                    mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
+                }
             }
         }
-        for (vector<IncomingPairing>::iterator i = incoming.begin(); i != incoming.end(); ++i)
+        catch (const Ice::Exception& ex)
         {
-            mLogger(Debug) << FUNLOG << ": disconnecting " << i->first->ice_toString() << " and " << i->second->ice_toString();
-            try
-            {
-                i->first->setSink(0);
-            }
-            catch (const Ice::Exception& ex)
-            {
-                mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
-            }
-            try
-            {
-                i->second->setSource(0);
-            }
-            catch (const Ice::Exception& ex)
-            {
-                mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
-            }
+            mLogger(Debug) << FUNLOG << ":" << __LINE__ << ": exception, thought you would like to know " << ex.what();
         }
+
         return true;
     }
 
diff --git a/src/SessionListener.cpp b/src/SessionListener.cpp
index 71c6d4d..bf5b450 100644
--- a/src/SessionListener.cpp
+++ b/src/SessionListener.cpp
@@ -183,6 +183,16 @@ public:
             // A null response code pointer will prevent the stop indication from being sent back to this session.
 	    //
 	    session->shutdown(mListenerPrx, ResponseCodePtr());
+            mSessions->removeSession(session->getBridgedSession());
+
+            //
+            // It's a good idea to reap at this time to avoid having processes
+            // that might be disconnected from being considered in the
+            // visitSessions() run.  TODO: Some operations shouldn't be
+            // performed on sessions in certain states. It's really the
+            // operation's responsibility to prevent that from happening.
+            //
+            mSessions->reap();
 
             ShutdownSessionOperation shutdownOp(session->getSession(), mListenerPrx, stopped->response, mLogger);
             mSessions->visitSessions(shutdownOp);
@@ -195,7 +205,6 @@ public:
             {
                 try
                 {
-                    mSessions->reap();
                     SessionSeq currentSessions = mSessions->getSessionSeq();
 
                     //

commit b1411d90beaf59d710f87311c0471b57c29ab71f
Author: Brent Eagles <beagles at digium.com>
Date:   Fri Jun 3 13:38:55 2011 -0230

    Fixing build error

diff --git a/src/SessionCollection.h b/src/SessionCollection.h
index da7100c..745c7df 100644
--- a/src/SessionCollection.h
+++ b/src/SessionCollection.h
@@ -106,7 +106,7 @@ public:
             }
             catch (const std::exception& ex)
             {
-                mLogger(Error) << "visitSessions caught " << ex.what();
+                mLogger(AsteriskSCF::System::Logging::Error) << "visitSessions caught " << ex.what();
                 if (!ignoreExceptions)
                 {
                     throw;

commit 2e92a5419e33830e5896a7121eacb79d8450b28a
Author: Brent Eagles <beagles at digium.com>
Date:   Fri Jun 3 13:33:57 2011 -0230

    Fixes to address an issue where indications were being sent to sessions that
    the bridge should have already disregarded.

diff --git a/src/BridgeImpl.cpp b/src/BridgeImpl.cpp
index fcfab3b..60b6bb2 100755
--- a/src/BridgeImpl.cpp
+++ b/src/BridgeImpl.cpp
@@ -784,6 +784,13 @@ void BridgeImpl::replaceSession_async(const AMD_Bridge_replaceSessionPtr& callba
         SessionsTrackerPtr removeTracker(new SessionsTracker);
         removeTracker->add(session->getSession());
         session->shutdown(mSessionListenerPrx, new ResponseCode);
+
+        //
+        // Since the shutdown of the session is inherently asynchronous, the
+        // rest of this is going to happen anyways, so lets remove it from the
+        // list of known sessions now so it doesn't get in the way.
+        //
+        mSessions->removeSession(session->getBridgedSession());
         
         SessionsTrackerPtr tracker(new SessionsTracker);
         QueuedTasks tasks;
diff --git a/src/SessionCollection.h b/src/SessionCollection.h
index d961f87..da7100c 100644
--- a/src/SessionCollection.h
+++ b/src/SessionCollection.h
@@ -95,12 +95,23 @@ public:
      *
      **/
     template <typename Func>
-    Func& visitSessions(Func& op)
+    Func& visitSessions(Func& op, bool ignoreExceptions = true)
     {
         boost::shared_lock<boost::shared_mutex> lock(mLock);
         for (SessionMap::iterator i = mMap.begin(); i != mMap.end(); ++i)
         {
-            op(i->second);
+            try
+            {
+                op(i->second);
+            }
+            catch (const std::exception& ex)
+            {
+                mLogger(Error) << "visitSessions caught " << ex.what();
+                if (!ignoreExceptions)
+                {
+                    throw;
+                }
+            }
         }
         return op;
     }
diff --git a/src/SessionListener.cpp b/src/SessionListener.cpp
index 0521181..71c6d4d 100644
--- a/src/SessionListener.cpp
+++ b/src/SessionListener.cpp
@@ -219,6 +219,7 @@ public:
             //
             // TODO: Who gets the ring notifications will likely depend on configuration, etc.
             //
+            mSessions->reap();
             RelayIndication relayer(source, mLogger, commandIndication, false);
             mSessions->visitSessions(relayer);
         }

commit 29d4f2f06467b3b03b09b79588d37ab7c5b452ca
Author: Brent Eagles <beagles at digium.com>
Date:   Fri Jun 3 11:41:26 2011 -0230

    Resolve a silly media connection issue where audio would not be connected properly.

diff --git a/src/MediaSplicer.cpp b/src/MediaSplicer.cpp
index 4bdcdae..7812b64 100755
--- a/src/MediaSplicer.cpp
+++ b/src/MediaSplicer.cpp
@@ -31,6 +31,10 @@
 // * Cleanup of MediaConnectorI.
 // * Conference bridging.
 //
+// NOTES: I suspect there is a lot of unnecessary work being done here if some reasonable distributed object
+// protocols are followed throughout. The incoming and outgoing pairings and the disconnect/reconnect
+// logic is also likely fraught with race conditions. I will be looking at this more detail IMMEDIATELY.
+//
 using namespace AsteriskSCF::System::Logging;
 using namespace AsteriskSCF::Media::V1;
 using namespace AsteriskSCF::Bridge::V1;
@@ -452,6 +456,10 @@ public:
     MediaConnectorPtr createConnector(const SessionWrapperPtr& session, const MediaConnectorBuilderPtr& data)
     {
         MediaConnectorIPtr connector(new MediaConnectorI(data, mBridgeId, session->id(), mReplicator, mLogger));
+
+        //
+        // TODO: check to make sure this isn't mirroring!
+        //
         if (data->peer)
         {
             data->peer->update(connector, data->outgoingPairings, data->incomingPairings);
@@ -533,7 +541,7 @@ public:
         return result;
     }
 
-    vector<OutgoingPairing> findCompatiblePairings(const StreamSinkSeq& sinks)
+    vector<OutgoingPairing> findCompatiblePairings(const AsteriskSCF::Media::V1::SessionPrx& sessionToBeConnected, const StreamSinkSeq& sinks)
     {
         vector<StreamSourceSeq> allSources;
 
@@ -545,6 +553,10 @@ public:
             //
             for (MediaSessions::iterator i = mSessions.begin(); i != mSessions.end(); ++i)
             {
+                if (i->mediaSession->ice_getIdentity() == sessionToBeConnected->ice_getIdentity())
+                {
+                    continue;
+                }
                 allSources.push_back(i->mediaSession->getSources());
             }
         }
@@ -578,7 +590,7 @@ public:
         return result;
     }
 
-    vector<IncomingPairing> findCompatiblePairings(const StreamSourceSeq& sources)
+    vector<IncomingPairing> findCompatiblePairings(const AsteriskSCF::Media::V1::SessionPrx& sessionToBeConnected, const StreamSourceSeq& sources)
     {
         vector<StreamSinkSeq> allSinks;
         {
@@ -589,6 +601,10 @@ public:
             //
             for (MediaSessions::iterator i = mSessions.begin(); i != mSessions.end(); ++i)
             {
+                if (i->mediaSession->ice_getIdentity() == sessionToBeConnected->ice_getIdentity())
+                {
+                    continue;
+                }
                 allSinks.push_back(i->mediaSession->getSinks());
             }
         }
@@ -791,8 +807,8 @@ public:
 protected:
     bool executeImpl()
     {
-        mMaterials->incomingPairings = mSplicer->findCompatiblePairings(mMaterials->sources);
-        mMaterials->outgoingPairings = mSplicer->findCompatiblePairings(mMaterials->sinks);
+        mMaterials->incomingPairings = mSplicer->findCompatiblePairings(mMaterials->mediaSession, mMaterials->sources);
+        mMaterials->outgoingPairings = mSplicer->findCompatiblePairings(mMaterials->mediaSession, mMaterials->sinks);
         return true;
     }
 

commit bc789938cc49587975f97a60d7bcb1a681ec981c
Author: Brent Eagles <beagles at digium.com>
Date:   Thu Jun 2 23:50:40 2011 -0230

    Solution for attended transfers. Basically the removeBridge implementation was
    doing things it shouldn't to the session being removed.

diff --git a/src/BridgeImpl.cpp b/src/BridgeImpl.cpp
index 29e4849..fcfab3b 100755
--- a/src/BridgeImpl.cpp
+++ b/src/BridgeImpl.cpp
@@ -591,8 +591,8 @@ void BridgeImpl::removeSessions_async(const AMD_Bridge_removeSessionsPtr& callba
             SessionWrapperPtr session = mSessions->getSession(*i);
             if (session)
             {
-                session->shutdown(mSessionListenerPrx, new ResponseCode);
                 removed->add(session->getSession());
+                mSessions->removeSession(session->getBridgedSession());
             }
         }
         QueuedTasks tasks;

commit a6d7d3da25de0c72ca58fd32b389de1810e4eedf
Author: Brent Eagles <beagles at digium.com>
Date:   Thu Jun 2 21:37:14 2011 -0230

... 97 lines suppressed ...


-- 
asterisk-scf/integration/bridging.git



More information about the asterisk-scf-commits mailing list