summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ObjectAdapterI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2009-10-16 11:31:59 +0200
committerBenoit Foucher <benoit@zeroc.com>2009-10-16 11:31:59 +0200
commitba0d6f63970277f5ccc3bf6447a5c451d007b36e (patch)
tree88a7217bec554a95a4ca256bb53d3fa6c08f5db1 /cpp/src/Ice/ObjectAdapterI.cpp
parentFixed py and rb to compile again with Enpoint changes (diff)
downloadice-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.cpp28
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",