diff options
author | Benoit Foucher <benoit@zeroc.com> | 2009-10-16 11:31:59 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2009-10-16 11:31:59 +0200 |
commit | ba0d6f63970277f5ccc3bf6447a5c451d007b36e (patch) | |
tree | 88a7217bec554a95a4ca256bb53d3fa6c08f5db1 /cpp/src/Ice/ObjectAdapterI.cpp | |
parent | Fixed py and rb to compile again with Enpoint changes (diff) | |
download | ice-ba0d6f63970277f5ccc3bf6447a5c451d007b36e.tar.bz2 ice-ba0d6f63970277f5ccc3bf6447a5c451d007b36e.tar.xz ice-ba0d6f63970277f5ccc3bf6447a5c451d007b36e.zip |
Added support for per-OA ACM and fix for retry on CloseConnectionException
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterI.cpp')
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index 95ce1cdc2b8..4c3a0f5335e 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -11,6 +11,7 @@ #include <Ice/ObjectAdapterI.h> #include <Ice/ObjectAdapterFactory.h> #include <Ice/Instance.h> +#include <Ice/ConnectionMonitor.h> #include <Ice/Proxy.h> #include <Ice/ProxyFactory.h> #include <Ice/ReferenceFactory.h> @@ -830,6 +831,23 @@ Ice::ObjectAdapterI::getServantManager() const return _servantManager; } +Ice::Int +Ice::ObjectAdapterI::getACM() const +{ + // Not check for deactivation here! + + assert(_instance); // Must not be called after destroy(). + + if(_hasAcmTimeout) + { + return _acmTimeout; + } + else + { + return _instance->serverACM(); + } +} + // // COMPILERFIX: The ObjectAdapterI setup is broken out into a separate initialize // function because when it was part of the constructor C++Builder 2010 apps would @@ -842,6 +860,8 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const Communica _instance(instance), _communicator(communicator), _objectAdapterFactory(objectAdapterFactory), + _hasAcmTimeout(false), + _acmTimeout(0), _servantManager(new ServantManager(instance, name)), _activateOneOffDone(false), _name(name), @@ -924,6 +944,13 @@ Ice::ObjectAdapterI::initialize(const RouterPrx& router) { _threadPool = new ThreadPool(_instance, _name + ".ThreadPool", 0); } + + _hasAcmTimeout = properties->getProperty(_name + ".ACM") != ""; + if(_hasAcmTimeout) + { + _acmTimeout = properties->getPropertyAsInt(_name + ".ACM"); + _instance->connectionMonitor()->checkIntervalForACM(_acmTimeout); + } if(!router) { @@ -1404,6 +1431,7 @@ Ice::ObjectAdapterI::filterProperties(StringSeq& unknownProps) { static const string suffixes[] = { + "ACM", "AdapterId", "Endpoints", "Locator", |