summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/Instance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceStorm/Instance.cpp')
-rw-r--r--cpp/src/IceStorm/Instance.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/cpp/src/IceStorm/Instance.cpp b/cpp/src/IceStorm/Instance.cpp
index db9446b93cc..1f6b07dd467 100644
--- a/cpp/src/IceStorm/Instance.cpp
+++ b/cpp/src/IceStorm/Instance.cpp
@@ -12,8 +12,10 @@
#include <IceStorm/DB.h>
#include <IceStorm/Observers.h>
#include <IceStorm/NodeI.h>
+#include <IceStorm/InstrumentationI.h>
#include <IceUtil/Timer.h>
+#include <Ice/InstrumentationI.h>
#include <Ice/Communicator.h>
#include <Ice/Properties.h>
@@ -67,6 +69,16 @@ Instance::Instance(
_observers = new Observers(this);
_batchFlusher = new IceUtil::Timer();
_timer = new IceUtil::Timer();
+
+ //
+ // If an Ice metrics are setup on the communicator, also
+ // enable metrics for IceStorm.
+ //
+ IceMX::CommunicatorObserverIPtr o = IceMX::CommunicatorObserverIPtr::dynamicCast(communicator->getObserver());
+ if(o)
+ {
+ _observer = new IceMX::TopicManagerObserverI(o->getMetricsAdmin());
+ }
}
catch(...)
{
@@ -186,6 +198,12 @@ Instance::connectionPool() const
return _connectionPool;
}
+IceStorm::Instrumentation::TopicManagerObserverPtr
+Instance::observer() const
+{
+ return _observer;
+}
+
IceUtil::Time
Instance::discardInterval() const
{