summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Incoming.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2014-12-17 18:06:54 +0100
committerBenoit Foucher <benoit@zeroc.com>2014-12-17 18:06:54 +0100
commit5a57686d2ccbb085b8ac67908ad9525a6bafaf4b (patch)
tree58c2219412e8af66fbfd66d5269af6b7a48b28d2 /cpp/src/Ice/Incoming.cpp
parentAvoid check_output isn't supported with python 2.6 (diff)
downloadice-5a57686d2ccbb085b8ac67908ad9525a6bafaf4b.tar.bz2
ice-5a57686d2ccbb085b8ac67908ad9525a6bafaf4b.tar.xz
ice-5a57686d2ccbb085b8ac67908ad9525a6bafaf4b.zip
Fixed ICE-6199 - changed collocation optimization to call AMI cb asynchronously if AMD dispatch
Diffstat (limited to 'cpp/src/Ice/Incoming.cpp')
-rw-r--r--cpp/src/Ice/Incoming.cpp40
1 files changed, 20 insertions, 20 deletions
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp
index b2cc6cbaef4..160549421ee 100644
--- a/cpp/src/Ice/Incoming.cpp
+++ b/cpp/src/Ice/Incoming.cpp
@@ -207,7 +207,7 @@ IceInternal::IncomingBase::__warning(const string& msg) const
}
bool
-IceInternal::IncomingBase::__servantLocatorFinished()
+IceInternal::IncomingBase::__servantLocatorFinished(bool amd)
{
assert(_locator && _servant);
try
@@ -232,7 +232,7 @@ IceInternal::IncomingBase::__servantLocatorFinished()
_os.write(ex);
_os.endWriteEncaps();
_observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
- _responseHandler->sendResponse(_current.requestId, &_os, _compress);
+ _responseHandler->sendResponse(_current.requestId, &_os, _compress, amd);
}
else
{
@@ -244,23 +244,23 @@ IceInternal::IncomingBase::__servantLocatorFinished()
}
catch(const std::exception& ex)
{
- __handleException(ex);
+ __handleException(ex, amd);
}
catch(...)
{
- __handleException();
+ __handleException(amd);
}
return false;
}
void
-IceInternal::IncomingBase::__handleException(const std::exception& exc)
+IceInternal::IncomingBase::__handleException(const std::exception& exc, bool amd)
{
assert(_responseHandler);
if(const SystemException* ex = dynamic_cast<const SystemException*>(&exc))
{
- if(_responseHandler->systemException(_current.requestId, *ex))
+ if(_responseHandler->systemException(_current.requestId, *ex, amd))
{
return;
}
@@ -333,7 +333,7 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc)
_os.write(rfe->operation, false);
_observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
- _responseHandler->sendResponse(_current.requestId, &_os, _compress);
+ _responseHandler->sendResponse(_current.requestId, &_os, _compress, amd);
}
else
{
@@ -405,7 +405,7 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc)
}
_observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
- _responseHandler->sendResponse(_current.requestId, &_os, _compress);
+ _responseHandler->sendResponse(_current.requestId, &_os, _compress, amd);
}
else
{
@@ -433,7 +433,7 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc)
_os.write(str.str(), false);
_observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
- _responseHandler->sendResponse(_current.requestId, &_os, _compress);
+ _responseHandler->sendResponse(_current.requestId, &_os, _compress, amd);
}
else
{
@@ -446,7 +446,7 @@ IceInternal::IncomingBase::__handleException(const std::exception& exc)
}
void
-IceInternal::IncomingBase::__handleException()
+IceInternal::IncomingBase::__handleException(bool amd)
{
if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0)
{
@@ -467,7 +467,7 @@ IceInternal::IncomingBase::__handleException()
string reason = "unknown c++ exception";
_os.write(reason, false);
_observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
- _responseHandler->sendResponse(_current.requestId, &_os, _compress);
+ _responseHandler->sendResponse(_current.requestId, &_os, _compress, amd);
}
else
{
@@ -648,7 +648,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre
_os.write(ex);
_os.endWriteEncaps();
_observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
- _responseHandler->sendResponse(_current.requestId, &_os, _compress);
+ _responseHandler->sendResponse(_current.requestId, &_os, _compress, false);
}
else
{
@@ -662,13 +662,13 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre
catch(const std::exception& ex)
{
_is->skipEncaps(); // Required for batch requests.
- __handleException(ex);
+ __handleException(ex, false);
return;
}
catch(...)
{
_is->skipEncaps(); // Required for batch requests.
- __handleException();
+ __handleException(false);
return;
}
}
@@ -688,7 +688,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre
return;
}
- if(_locator && !__servantLocatorFinished())
+ if(_locator && !__servantLocatorFinished(false))
{
return;
}
@@ -713,20 +713,20 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre
}
catch(const std::exception& ex)
{
- if(_servant && _locator && !__servantLocatorFinished())
+ if(_servant && _locator && !__servantLocatorFinished(false))
{
return;
}
- __handleException(ex);
+ __handleException(ex, false);
return;
}
catch(...)
{
- if(_servant && _locator && !__servantLocatorFinished())
+ if(_servant && _locator && !__servantLocatorFinished(false))
{
return;
}
- __handleException();
+ __handleException(false);
return;
}
@@ -739,7 +739,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre
if(_response)
{
_observer.reply(static_cast<Int>(_os.b.size() - headerSize - 4));
- _responseHandler->sendResponse(_current.requestId, &_os, _compress);
+ _responseHandler->sendResponse(_current.requestId, &_os, _compress, false);
}
else
{