diff options
author | Benoit Foucher <benoit@zeroc.com> | 2014-07-01 17:42:04 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2014-07-01 17:42:04 +0200 |
commit | 344a7fd6e0d716f81dc27495e97a7ad9c2ab07b8 (patch) | |
tree | bd06f4919e5a5827f60e2a536e43e47a4fbed6d2 /cpp/src/Ice/InstrumentationI.cpp | |
parent | Fixed ICE-5569: IceStorm IceMX debug iterator assert (diff) | |
download | ice-344a7fd6e0d716f81dc27495e97a7ad9c2ab07b8.tar.bz2 ice-344a7fd6e0d716f81dc27495e97a7ad9c2ab07b8.tar.xz ice-344a7fd6e0d716f81dc27495e97a7ad9c2ab07b8.zip |
IceMX and Python support for the new collocation optimization
Diffstat (limited to 'cpp/src/Ice/InstrumentationI.cpp')
-rw-r--r-- | cpp/src/Ice/InstrumentationI.cpp | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/cpp/src/Ice/InstrumentationI.cpp b/cpp/src/Ice/InstrumentationI.cpp index 6ff70f8aafb..b0a06b1cf08 100644 --- a/cpp/src/Ice/InstrumentationI.cpp +++ b/cpp/src/Ice/InstrumentationI.cpp @@ -583,7 +583,7 @@ private: RemoteInvocationHelper::Attributes RemoteInvocationHelper::attributes; -class CollocatedInvocationHelper : public MetricsHelperT<RemoteMetrics> +class CollocatedInvocationHelper : public MetricsHelperT<CollocatedMetrics> { public: @@ -600,7 +600,8 @@ public: }; static Attributes attributes; - CollocatedInvocationHelper(int requestId, int size) : _requestId(requestId), _size(size) + CollocatedInvocationHelper(const Ice::ObjectAdapterPtr& adapter, int requestId, int size) : + _requestId(requestId), _size(size), _id(adapter->getName()) { } @@ -609,7 +610,7 @@ public: return attributes(this, attribute); } - virtual void initMetrics(const RemoteMetricsPtr& v) const + virtual void initMetrics(const CollocatedMetricsPtr& v) const { v->size += _size; } @@ -617,12 +618,6 @@ public: const string& getId() const { - if(_id.empty()) - { - ostringstream os; - os << _requestId; - _id = os.str(); - } return _id; } @@ -824,6 +819,16 @@ RemoteObserverI::reply(Int size) } void +CollocatedObserverI::reply(Int size) +{ + forEach(add(&CollocatedMetrics::replySize, size)); + if(_delegate) + { + _delegate->reply(size); + } +} + +void InvocationObserverI::retried() { forEach(inc(&InvocationMetrics::retry)); @@ -866,19 +871,19 @@ InvocationObserverI::getRemoteObserver(const ConnectionInfoPtr& connection, return 0; } -RemoteObserverPtr -InvocationObserverI::getCollocatedObserver(int requestId, int size) +CollocatedObserverPtr +InvocationObserverI::getCollocatedObserver(const Ice::ObjectAdapterPtr& adapter, int requestId, int size) { try { - RemoteObserverPtr delegate; + CollocatedObserverPtr delegate; if(_delegate) { - delegate = _delegate->getCollocatedObserver(requestId, size); + delegate = _delegate->getCollocatedObserver(adapter, requestId, size); } - return getObserverWithDelegate<RemoteObserverI>("Collocated", - CollocatedInvocationHelper(requestId, size), - delegate); + return getObserverWithDelegate<CollocatedObserverI>("Collocated", + CollocatedInvocationHelper(adapter, requestId, size), + delegate); } catch(const exception&) { @@ -899,6 +904,7 @@ CommunicatorObserverI::CommunicatorObserverI(const IceInternal::MetricsAdminIPtr _endpointLookups(metrics, "EndpointLookup") { _invocations.registerSubMap<RemoteMetrics>("Remote", &InvocationMetrics::remotes); + _invocations.registerSubMap<CollocatedMetrics>("Collocated", &InvocationMetrics::collocated); } void |