summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/TopicManagerI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceStorm/TopicManagerI.cpp')
-rw-r--r--cpp/src/IceStorm/TopicManagerI.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/cpp/src/IceStorm/TopicManagerI.cpp b/cpp/src/IceStorm/TopicManagerI.cpp
index 009574b7706..444d734f153 100644
--- a/cpp/src/IceStorm/TopicManagerI.cpp
+++ b/cpp/src/IceStorm/TopicManagerI.cpp
@@ -17,6 +17,7 @@
#include <IceStorm/TopicI.h>
#include <IceStorm/Flusher.h>
#include <IceStorm/TraceLevels.h>
+#include <Freeze/Initialize.h>
#include <functional>
#include <ctype.h>
@@ -32,7 +33,8 @@ TopicManagerI::TopicManagerI(const Ice::CommunicatorPtr& communicator, const Ice
_publishAdapter(publishAdapter),
_traceLevels(traceLevels),
_envName(envName),
- _topics(_communicator, envName, dbName)
+ _connection(Freeze::createConnection(_communicator, envName)),
+ _topics(_connection, dbName)
{
_flusher = new Flusher(_communicator, _traceLevels);
_factory = new SubscriberFactory(_communicator, _traceLevels, _flusher);
@@ -195,6 +197,13 @@ TopicManagerI::reap()
}
void
+TopicManagerI::shutdown()
+{
+ IceUtil::Mutex::Lock sync(*this);
+ reap();
+}
+
+void
TopicManagerI::installTopic(const string& message, const string& name, bool create)
{
if(_traceLevels->topicMgr > 0)