summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/FactoryACMMonitor.java
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2014-10-20 11:40:05 -0230
committerMatthew Newhook <matthew@zeroc.com>2014-10-20 11:40:05 -0230
commitb51469b41167fb86ae2059a15cf0475c53fdda7b (patch)
treefc85d6ca2efd89c67e1e4e7438f437c3e08313f4 /java/src/IceInternal/FactoryACMMonitor.java
parentFixed (ICE-5695) - IceSSL: misleading exception (diff)
downloadice-b51469b41167fb86ae2059a15cf0475c53fdda7b.tar.bz2
ice-b51469b41167fb86ae2059a15cf0475c53fdda7b.tar.xz
ice-b51469b41167fb86ae2059a15cf0475c53fdda7b.zip
Down with ant. From the gradle to the grave.
Diffstat (limited to 'java/src/IceInternal/FactoryACMMonitor.java')
-rw-r--r--java/src/IceInternal/FactoryACMMonitor.java232
1 files changed, 0 insertions, 232 deletions
diff --git a/java/src/IceInternal/FactoryACMMonitor.java b/java/src/IceInternal/FactoryACMMonitor.java
deleted file mode 100644
index 0f9b6d18f00..00000000000
--- a/java/src/IceInternal/FactoryACMMonitor.java
+++ /dev/null
@@ -1,232 +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;
-
-class FactoryACMMonitor implements ACMMonitor
-{
- class Change
- {
- Change(Ice.ConnectionI connection, boolean remove)
- {
- this.connection = connection;
- this.remove = remove;
- }
-
- final Ice.ConnectionI connection;
- final boolean remove;
- };
-
- FactoryACMMonitor(Instance instance, ACMConfig config)
- {
- _instance = instance;
- _config = config;
- }
-
- @Override
- protected synchronized void
- finalize()
- throws Throwable
- {
- try
- {
- IceUtilInternal.Assert.FinalizerAssert(_instance == null);
- IceUtilInternal.Assert.FinalizerAssert(_connections.isEmpty());
- IceUtilInternal.Assert.FinalizerAssert(_changes.isEmpty());
- IceUtilInternal.Assert.FinalizerAssert(_reapedConnections.isEmpty());
- }
- catch(java.lang.Exception ex)
- {
- }
- finally
- {
- super.finalize();
- }
- }
-
- synchronized void
- destroy()
- {
- if(_instance == null)
- {
- return;
- }
- _instance = null;
- _connections.clear();
- _changes.clear();
- }
-
- @Override
- public void
- add(Ice.ConnectionI connection)
- {
- if(_config.timeout == 0)
- {
- return;
- }
-
- synchronized(this)
- {
- if(_connections.isEmpty())
- {
- _connections.add(connection);
- assert _future == null;
- _future = _instance.timer().scheduleAtFixedRate(new Runnable() {
- @Override
- public void run()
- {
- monitorConnections();
- }
- },
- _config.timeout / 2, _config.timeout / 2, java.util.concurrent.TimeUnit.MILLISECONDS);
- }
- else
- {
- _changes.add(new Change(connection, false));
- }
- }
- }
-
- @Override
- public void
- remove(Ice.ConnectionI connection)
- {
- if(_config.timeout == 0)
- {
- return;
- }
-
- synchronized(this)
- {
- assert(_instance != null);
- _changes.add(new Change(connection, true));
- }
- }
-
- @Override
- public synchronized void
- reap(Ice.ConnectionI connection)
- {
- _reapedConnections.add(connection);
- }
-
- @Override
- public synchronized ACMMonitor
- acm(Ice.IntOptional timeout, Ice.Optional<Ice.ACMClose> close, Ice.Optional<Ice.ACMHeartbeat> heartbeat)
- {
- assert(_instance != null);
-
- ACMConfig config = (ACMConfig)_config.clone();
- if(timeout != null && timeout.isSet())
- {
- config.timeout = timeout.get() * 1000; // To milliseconds
- }
- if(close != null && close.isSet())
- {
- config.close = close.get();
- }
- if(heartbeat != null && heartbeat.isSet())
- {
- config.heartbeat = heartbeat.get();
- }
- return new ConnectionACMMonitor(this, _instance.timer(), config);
- }
-
- @Override
- public Ice.ACM
- getACM()
- {
- Ice.ACM acm = new Ice.ACM();
- acm.timeout = _config.timeout / 1000;
- acm.close = _config.close;
- acm.heartbeat = _config.heartbeat;
- return acm;
- }
-
- synchronized java.util.List<Ice.ConnectionI>
- swapReapedConnections()
- {
- if(_reapedConnections.isEmpty())
- {
- return null;
- }
- java.util.List<Ice.ConnectionI> connections = _reapedConnections;
- _reapedConnections = new java.util.ArrayList<Ice.ConnectionI>();
- return connections;
- }
-
- private void
- monitorConnections()
- {
- synchronized(this)
- {
- if(_instance == null)
- {
- return;
- }
-
- for(Change change : _changes)
- {
- if(change.remove)
- {
- _connections.remove(change.connection);
- }
- else
- {
- _connections.add(change.connection);
- }
- }
- _changes.clear();
-
- if(_connections.isEmpty())
- {
- _future.cancel(false);
- _future = null;
- return;
- }
- }
-
-
- //
- // Monitor connections outside the thread synchronization, so
- // that connections can be added or removed during monitoring.
- //
- long now = Time.currentMonotonicTimeMillis();
- for(Ice.ConnectionI connection : _connections)
- {
- try
- {
- connection.monitor(now, _config);
- }
- catch(Exception ex)
- {
- handleException(ex);
- }
- }
- }
-
- synchronized void
- handleException(Exception ex)
- {
- if(_instance == null)
- {
- return;
- }
- _instance.initializationData().logger.error("exception in connection monitor:\n" + ex);
- }
-
- private Instance _instance;
- final private ACMConfig _config;
-
- private java.util.Set<Ice.ConnectionI> _connections = new java.util.HashSet<Ice.ConnectionI>();
- private java.util.List<Change> _changes = new java.util.ArrayList<Change>();
- private java.util.List<Ice.ConnectionI> _reapedConnections = new java.util.ArrayList<Ice.ConnectionI>();
- private java.util.concurrent.Future<?> _future;
-};
-