diff options
author | Benoit Foucher <benoit@zeroc.com> | 2014-05-23 11:59:44 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2014-05-23 11:59:44 +0200 |
commit | d81701ca8182942b7936f9fd84a019b695e9c890 (patch) | |
tree | dc036c9d701fbbe1afad67782bd78572c0f61974 /java/src/IceInternal/ConnectionMonitor.java | |
parent | Fixed bug ICE-5543: stringToIdentity bug with escaped escapes (diff) | |
download | ice-d81701ca8182942b7936f9fd84a019b695e9c890.tar.bz2 ice-d81701ca8182942b7936f9fd84a019b695e9c890.tar.xz ice-d81701ca8182942b7936f9fd84a019b695e9c890.zip |
Added support for invocation timeouts and ACM heartbeats
Diffstat (limited to 'java/src/IceInternal/ConnectionMonitor.java')
-rw-r--r-- | java/src/IceInternal/ConnectionMonitor.java | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/java/src/IceInternal/ConnectionMonitor.java b/java/src/IceInternal/ConnectionMonitor.java deleted file mode 100644 index 7941d3cb700..00000000000 --- a/java/src/IceInternal/ConnectionMonitor.java +++ /dev/null @@ -1,160 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -package IceInternal; - -public final class ConnectionMonitor implements IceInternal.TimerTask -{ - // - // Renamed from destroy to _destroy to avoid a deprecation warning caused - // by the destroy method inherited from Thread. - // - synchronized public void - destroy() - { - assert(_instance != null); - _instance = null; - _connections = null; - } - - public void - checkIntervalForACM(int acmTimeout) - { - if(acmTimeout <= 0) - { - return; - } - - // - // If Ice.MonitorConnections isn't set (_interval == 0), the given ACM is used - // to determine the check interval: 1/10 of the ACM timeout with a minmal value - // of 5 seconds and a maximum value of 5 minutes. - // - // Note: if Ice.MonitorConnections is set, the timer is schedulded only if ACM - // is configured for the communicator or some object adapters. - // - int interval; - if(_interval == 0) - { - interval = java.lang.Math.min(300, java.lang.Math.max(5, (int)acmTimeout / 10)); - } - else if(_scheduledInterval == _interval) - { - return; // Nothing to do, the timer is already scheduled. - } - else - { - interval = _interval; - } - - // - // If no timer is scheduled yet or if the given ACM requires a smaller interval, - // we re-schedule the timer. - // - synchronized(this) - { - if(_scheduledInterval == 0 || _scheduledInterval > interval) - { - _scheduledInterval = interval; - _instance.timer().cancel(this); - _instance.timer().scheduleRepeated(this, interval * 1000); - } - } - } - - public synchronized void - add(Ice.ConnectionI connection) - { - assert(_instance != null); - _connections.add(connection); - } - - public synchronized void - remove(Ice.ConnectionI connection) - { - assert(_instance != null); - _connections.remove(connection); - } - - // - // Only for use by Instance. - // - ConnectionMonitor(Instance instance, int interval) - { - _instance = instance; - _interval = interval; - _scheduledInterval = 0; - } - - protected synchronized void - finalize() - throws Throwable - { - try - { - IceUtilInternal.Assert.FinalizerAssert(_instance == null); - IceUtilInternal.Assert.FinalizerAssert(_connections == null); - } - catch(java.lang.Exception ex) - { - } - finally - { - super.finalize(); - } - } - - public void - runTimerTask() - { - java.util.Set<Ice.ConnectionI> connections = new java.util.HashSet<Ice.ConnectionI>(); - - synchronized(this) - { - if(_instance == null) - { - return; - } - - connections.clear(); - connections.addAll(_connections); - } - - // - // Monitor connections outside the thread synchronization, - // so that connections can be added or removed during - // monitoring. - // - long now = IceInternal.Time.currentMonotonicTimeMillis(); - for(Ice.ConnectionI conn : connections) - { - try - { - conn.monitor(now); - } - catch(java.lang.Exception ex) - { - synchronized(this) - { - if(_instance == null) - { - return; - } - String s = "exception in connection monitor:\n" + Ex.toString(ex); - _instance.initializationData().logger.error(s); - } - } - } - } - - private Instance _instance; - private final int _interval; - private int _scheduledInterval; - private java.util.Set<Ice.ConnectionI> _connections = new java.util.HashSet<Ice.ConnectionI>(); -} |