diff options
author | Benoit Foucher <benoit@zeroc.com> | 2012-09-14 09:38:12 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2012-09-14 09:38:12 +0200 |
commit | 385eee21aa83ab84227900bef4e4f821e8f18ab8 (patch) | |
tree | 2d251648e791c0be499c50d14ccc1ec4626be29d /cpp/src/IceStorm/Subscriber.cpp | |
parent | Fixed IceGrid issue caused by skype_props merge (diff) | |
download | ice-385eee21aa83ab84227900bef4e4f821e8f18ab8.tar.bz2 ice-385eee21aa83ab84227900bef4e4f821e8f18ab8.tar.xz ice-385eee21aa83ab84227900bef4e4f821e8f18ab8.zip |
Fixed metrics tests
Diffstat (limited to 'cpp/src/IceStorm/Subscriber.cpp')
-rwxr-xr-x | cpp/src/IceStorm/Subscriber.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/cpp/src/IceStorm/Subscriber.cpp b/cpp/src/IceStorm/Subscriber.cpp index 8e9a8c74c38..4733d93d296 100755 --- a/cpp/src/IceStorm/Subscriber.cpp +++ b/cpp/src/IceStorm/Subscriber.cpp @@ -78,6 +78,21 @@ private: }; typedef IceUtil::Handle<PerSubscriberPublisherI> PerSubscriberPublisherIPtr; +IceStorm::Instrumentation::SubscriberState +toSubscriberState(Subscriber::SubscriberState s) +{ + switch(s) + { + case Subscriber::SubscriberStateOnline: + return IceStorm::Instrumentation::SubscriberStateOnline; + case Subscriber::SubscriberStateOffline: + return IceStorm::Instrumentation::SubscriberStateOffline; + case Subscriber::SubscriberStateError: + case Subscriber::SubscriberStateReaped: + return IceStorm::Instrumentation::SubscriberStateError; + } +} + } // Each of the various Subscriber types. @@ -899,7 +914,9 @@ Subscriber::updateObserver() _rec.topicName, _rec.obj, _rec.theQoS, - _rec.theTopic, _observer.get())); + _rec.theTopic, + toSubscriberState(_state), + _observer.get())); } } @@ -934,6 +951,7 @@ Subscriber::Subscriber( rec.obj, rec.theQoS, rec.theTopic, + toSubscriberState(_state), 0)); } } @@ -974,6 +992,17 @@ Subscriber::setState(Subscriber::SubscriberState state) << " transition from: " << stateToString(_state) << " to: " << stateToString(state); } _state = state; + + if(_instance->observer()) + { + _observer.attach(_instance->observer()->getSubscriberObserver(_instance->serviceName(), + _rec.topicName, + _rec.obj, + _rec.theQoS, + _rec.theTopic, + toSubscriberState(_state), + _observer.get())); + } } } |