diff options
Diffstat (limited to 'mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/ConnectionMonitorThread.java')
-rw-r--r-- | mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/ConnectionMonitorThread.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/ConnectionMonitorThread.java b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/ConnectionMonitorThread.java new file mode 100644 index 000000000..1a2011771 --- /dev/null +++ b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/ConnectionMonitorThread.java @@ -0,0 +1,44 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.gecko.sync.net; + +import org.mozilla.gecko.background.common.log.Logger; + +/** + * Every <code>REAP_INTERVAL</code> milliseconds, wake up + * and expire any connections that need cleaning up. + * + * When we're told to shut down, take the connection manager + * with us. + */ +public class ConnectionMonitorThread extends Thread { + private static final long REAP_INTERVAL = 5000; // 5 seconds. + private static final String LOG_TAG = "ConnectionMonitorThread"; + + private volatile boolean stopping; + + @Override + public void run() { + try { + while (!stopping) { + synchronized (this) { + wait(REAP_INTERVAL); + BaseResource.closeExpiredConnections(); + } + } + } catch (InterruptedException e) { + Logger.trace(LOG_TAG, "Interrupted."); + } + BaseResource.shutdownConnectionManager(); + } + + public void shutdown() { + Logger.debug(LOG_TAG, "ConnectionMonitorThread told to shut down."); + stopping = true; + synchronized (this) { + notifyAll(); + } + } +} |