diff options
author | Benoit Foucher <benoit@zeroc.com> | 2013-01-07 10:16:41 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2013-01-07 10:16:41 +0100 |
commit | 2c9e1d532eb36bce9167a0ec656808c0a653730a (patch) | |
tree | 58781d4f42f58a8bdc03a0c8a1a5fd3160fa44fb /cpp/src/Ice/Incoming.cpp | |
parent | Fixed (ICE-5058) - WinRT port Platform::AccessDeniedException (diff) | |
download | ice-2c9e1d532eb36bce9167a0ec656808c0a653730a.tar.bz2 ice-2c9e1d532eb36bce9167a0ec656808c0a653730a.tar.xz ice-2c9e1d532eb36bce9167a0ec656808c0a653730a.zip |
Fixed ICE-4933: Added size and replySize fields to dispatch and remote invocation metrics, support for requestId attribute
Diffstat (limited to 'cpp/src/Ice/Incoming.cpp')
-rw-r--r-- | cpp/src/Ice/Incoming.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp index 04dc96a838b..699ece0d3d5 100644 --- a/cpp/src/Ice/Incoming.cpp +++ b/cpp/src/Ice/Incoming.cpp @@ -230,6 +230,7 @@ IceInternal::IncomingBase::__servantLocatorFinished() _os.startWriteEncaps(_current.encoding, DefaultFormat); _os.write(ex); _os.endWriteEncaps(); + _observer.reply(_os.b.size() - headerSize - 4); _connection->sendResponse(&_os, _compress); } else @@ -322,6 +323,7 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc) _os.write(rfe->operation, false); + _observer.reply(_os.b.size() - headerSize - 4); _connection->sendResponse(&_os, _compress); } else @@ -389,6 +391,7 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc) _os.write(str.str(), false); } + _observer.reply(_os.b.size() - headerSize - 4); _connection->sendResponse(&_os, _compress); } else @@ -415,6 +418,8 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc) ostringstream str; str << "std::exception: " << exc.what(); _os.write(str.str(), false); + + _observer.reply(_os.b.size() - headerSize - 4); _connection->sendResponse(&_os, _compress); } else @@ -448,6 +453,7 @@ IceInternal::IncomingBase::__handleException() _os.write(replyUnknownException); string reason = "unknown c++ exception"; _os.write(reason, false); + _observer.reply(_os.b.size() - headerSize - 4); _connection->sendResponse(&_os, _compress); } else @@ -542,6 +548,8 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre { _is = stream; + BasicStream::Container::iterator start = _is->i; + // // Read the current. // @@ -582,8 +590,13 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre const CommunicatorObserverPtr& obsv = _is->instance()->initializationData().observer; if(obsv) - { - _observer.attach(obsv->getDispatchObserver(_current)); + { + // Read the parameter encapsulation size. + Ice::Int sz; + _is->read(sz); + _is->i -= 4; + + _observer.attach(obsv->getDispatchObserver(_current, _is->i - start + sz)); } // @@ -621,6 +634,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre _os.startWriteEncaps(encoding, DefaultFormat); _os.write(ex); _os.endWriteEncaps(); + _observer.reply(_os.b.size() - headerSize - 4); _connection->sendResponse(&_os, _compress); } else @@ -711,6 +725,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre if(_response) { + _observer.reply(_os.b.size() - headerSize - 4); _connection->sendResponse(&_os, _compress); } else |