summaryrefslogtreecommitdiff
path: root/cpp/src/IcePack/IcePackNode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IcePack/IcePackNode.cpp')
-rw-r--r--cpp/src/IcePack/IcePackNode.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/cpp/src/IcePack/IcePackNode.cpp b/cpp/src/IcePack/IcePackNode.cpp
index 61f67ac47c9..90d4ac25bd9 100644
--- a/cpp/src/IcePack/IcePackNode.cpp
+++ b/cpp/src/IcePack/IcePackNode.cpp
@@ -189,12 +189,18 @@ run(int argc, char* argv[], const Ice::CommunicatorPtr& communicator, const Free
activator = new ActivatorI(traceLevels, properties);
//
+ // Create the wait queue.
+ //
+ WaitQueuePtr waitQueue = new WaitQueue();
+ waitQueue->start();
+
+ //
// Creates the server factory. The server factory creates server
// and server adapter persistent objects. It also takes care of
// installing the evictors and object factory necessary to persist
// and create these objects.
//
- ServerFactoryPtr serverFactory = new ServerFactory(adapter, traceLevels, dbEnv, activator);
+ ServerFactoryPtr serverFactory = new ServerFactory(adapter, traceLevels, dbEnv, activator, waitQueue);
//
// Create the node object and the node info. Because of circular
@@ -306,6 +312,8 @@ run(int argc, char* argv[], const Ice::CommunicatorPtr& communicator, const Free
activator->waitForShutdown();
ignoreInterrupt();
+ waitQueue->destroy();
+
activator->destroy();
//
@@ -314,6 +322,8 @@ run(int argc, char* argv[], const Ice::CommunicatorPtr& communicator, const Free
communicator->shutdown();
communicator->waitForShutdown();
+ activator = 0;
+
return EXIT_SUCCESS;
}