summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Instance.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2005-04-06 22:20:02 +0000
committerMarc Laukien <marc@zeroc.com>2005-04-06 22:20:02 +0000
commitcd41eafb5b42d43372cbe5efa74b17165ea55a2a (patch)
treec92ca5abb12b0e7a5f45826d61860c0467ecf8fe /cpp/src/Ice/Instance.cpp
parentMerged IceUtil into Ice (diff)
downloadice-cd41eafb5b42d43372cbe5efa74b17165ea55a2a.tar.bz2
ice-cd41eafb5b42d43372cbe5efa74b17165ea55a2a.tar.xz
ice-cd41eafb5b42d43372cbe5efa74b17165ea55a2a.zip
Ice.ConnectionIdleTime.Client/Ice.ConnectionIdleTime.Server
Diffstat (limited to 'cpp/src/Ice/Instance.cpp')
-rw-r--r--cpp/src/Ice/Instance.cpp52
1 files changed, 43 insertions, 9 deletions
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index 917691beb51..a3a37bac58f 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -342,10 +342,17 @@ IceInternal::Instance::messageSizeMax() const
}
int
-IceInternal::Instance::connectionIdleTime() const
+IceInternal::Instance::clientConnectionIdleTime() const
{
// No mutex lock, immutable.
- return _connectionIdleTime;
+ return _clientConnectionIdleTime;
+}
+
+int
+IceInternal::Instance::serverConnectionIdleTime() const
+{
+ // No mutex lock, immutable.
+ return _serverConnectionIdleTime;
}
void
@@ -387,7 +394,8 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope
_destroyed(false),
_properties(properties),
_messageSizeMax(0),
- _connectionIdleTime(0),
+ _clientConnectionIdleTime(0),
+ _serverConnectionIdleTime(0),
_threadPerConnection(false),
_threadPerConnectionStackSize(0)
{
@@ -550,14 +558,27 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope
}
{
- Int num = _properties->getPropertyAsIntWithDefault("Ice.ConnectionIdleTime", 60);
- if(num < 0)
+ Int num = _properties->getPropertyAsInt("Ice.ConnectionIdleTime");
+ if(num > 0)
{
- const_cast<Int&>(_connectionIdleTime) = 0;
+ const_cast<Int&>(_clientConnectionIdleTime) = num;
+ const_cast<Int&>(_serverConnectionIdleTime) = num;
}
- else
+ }
+
+ {
+ Int num = _properties->getPropertyAsIntWithDefault("Ice.ConnectionIdleTime.Client", 60);
+ if(num > 0)
+ {
+ const_cast<Int&>(_clientConnectionIdleTime) = num;
+ }
+ }
+
+ {
+ Int num = _properties->getPropertyAsInt("Ice.ConnectionIdleTime.Server");
+ if(num > 0)
{
- const_cast<Int&>(_connectionIdleTime) = num;
+ const_cast<Int&>(_serverConnectionIdleTime) = num;
}
}
@@ -707,7 +728,20 @@ IceInternal::Instance::finishSetup(int& argc, char* argv[])
//
// Start connection monitor if necessary.
//
- Int interval = _properties->getPropertyAsIntWithDefault("Ice.MonitorConnections", _connectionIdleTime);
+ Int interval = 0;
+ if(_clientConnectionIdleTime > 0 && _serverConnectionIdleTime > 0)
+ {
+ interval = min(_clientConnectionIdleTime, _serverConnectionIdleTime);
+ }
+ else if(_clientConnectionIdleTime > 0)
+ {
+ interval = _clientConnectionIdleTime;
+ }
+ else if(_serverConnectionIdleTime > 0)
+ {
+ interval = _serverConnectionIdleTime;
+ }
+ interval = _properties->getPropertyAsIntWithDefault("Ice.MonitorConnections", interval);
if(interval > 0)
{
_connectionMonitor = new ConnectionMonitor(this, interval);