Loop until app shutdown. Runs connections in priority
order.
android.os.Process.setThreadPriority(
android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE);
mStartThreadTime = -1;
mCurrentThreadTime = SystemClock.currentThreadTimeMillis();
while (mRunning) {
Request request;
/* Get a request to process */
request = mRequestFeeder.getRequest();
/* wait for work */
if (request == null) {
synchronized(mRequestFeeder) {
if (HttpLog.LOGV) HttpLog.v("ConnectionThread: Waiting for work");
mWaiting = true;
try {
if (mStartThreadTime != -1) {
mCurrentThreadTime = SystemClock
.currentThreadTimeMillis();
}
mRequestFeeder.wait();
} catch (InterruptedException e) {
}
mWaiting = false;
}
} else {
if (HttpLog.LOGV) HttpLog.v("ConnectionThread: new request " +
request.mHost + " " + request );
HttpHost proxy = mConnectionManager.getProxyHost();
HttpHost host;
if (false) {
// Allow https proxy
host = proxy == null ? request.mHost : proxy;
} else {
// Disallow https proxy -- tmob proxy server
// serves a request loop for https reqs
host = (proxy == null ||
request.mHost.getSchemeName().equals("https")) ?
request.mHost : proxy;
}
mConnection = mConnectionManager.getConnection(mContext, host);
mConnection.processRequests(request);
if (mConnection.getCanPersist()) {
if (!mConnectionManager.recycleConnection(host,
mConnection)) {
mConnection.closeConnection();
}
} else {
mConnection.closeConnection();
}
mConnection = null;
}
}