diff -r 000000000000 -r 6474c204b198 mobile/android/base/sync/net/ConnectionMonitorThread.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobile/android/base/sync/net/ConnectionMonitorThread.java Wed Dec 31 06:09:35 2014 +0100 @@ -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 REAP_INTERVAL 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(); + } + } +}