what-the-bank/sources/okhttp3/Dispatcher.java

283 lines
9.6 KiB
Java

package okhttp3;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Deque;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import o.C14866gag;
import o.C14881gav;
import o.C14957gcv;
import okhttp3.internal.Util;
import okhttp3.internal.connection.RealCall;
/* loaded from: classes.dex */
public final class Dispatcher {
private ExecutorService executorServiceOrNull;
private Runnable idleCallback;
private int maxRequests;
private int maxRequestsPerHost;
private final ArrayDeque<RealCall.AsyncCall> readyAsyncCalls;
private final ArrayDeque<RealCall.AsyncCall> runningAsyncCalls;
private final ArrayDeque<RealCall> runningSyncCalls;
public Dispatcher() {
this.maxRequests = 64;
this.maxRequestsPerHost = 5;
this.readyAsyncCalls = new ArrayDeque<>();
this.runningAsyncCalls = new ArrayDeque<>();
this.runningSyncCalls = new ArrayDeque<>();
}
public final int getMaxRequests() {
int i;
synchronized (this) {
i = this.maxRequests;
}
return i;
}
public final void setMaxRequests(int i) {
if (i <= 0) {
throw new IllegalArgumentException(C14957gcv.c("max < 1: ", Integer.valueOf(i)).toString());
}
synchronized (this) {
this.maxRequests = i;
C14866gag c14866gag = C14866gag.c;
}
promoteAndExecute();
}
public final int getMaxRequestsPerHost() {
int i;
synchronized (this) {
i = this.maxRequestsPerHost;
}
return i;
}
public final void setMaxRequestsPerHost(int i) {
if (i <= 0) {
throw new IllegalArgumentException(C14957gcv.c("max < 1: ", Integer.valueOf(i)).toString());
}
synchronized (this) {
this.maxRequestsPerHost = i;
C14866gag c14866gag = C14866gag.c;
}
promoteAndExecute();
}
public final Runnable getIdleCallback() {
Runnable runnable;
synchronized (this) {
runnable = this.idleCallback;
}
return runnable;
}
public final void setIdleCallback(Runnable runnable) {
synchronized (this) {
this.idleCallback = runnable;
}
}
public final ExecutorService executorService() {
ExecutorService executorService;
synchronized (this) {
if (this.executorServiceOrNull == null) {
this.executorServiceOrNull = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue(), Util.threadFactory(C14957gcv.c(Util.okHttpName, (Object) " Dispatcher"), false));
}
executorService = this.executorServiceOrNull;
C14957gcv.e(executorService);
}
return executorService;
}
/* JADX WARN: 'this' call moved to the top of the method (can break code semantics) */
public Dispatcher(ExecutorService executorService) {
this();
C14957gcv.e(executorService, "");
this.executorServiceOrNull = executorService;
}
public final void enqueue$okhttp(RealCall.AsyncCall asyncCall) {
RealCall.AsyncCall findExistingCallWithHost;
C14957gcv.e(asyncCall, "");
synchronized (this) {
this.readyAsyncCalls.add(asyncCall);
if (!asyncCall.getCall().getForWebSocket() && (findExistingCallWithHost = findExistingCallWithHost(asyncCall.getHost())) != null) {
asyncCall.reuseCallsPerHostFrom(findExistingCallWithHost);
}
C14866gag c14866gag = C14866gag.c;
}
promoteAndExecute();
}
private final RealCall.AsyncCall findExistingCallWithHost(String str) {
Iterator<RealCall.AsyncCall> it = this.runningAsyncCalls.iterator();
while (it.hasNext()) {
RealCall.AsyncCall next = it.next();
if (C14957gcv.b((Object) next.getHost(), (Object) str)) {
return next;
}
}
Iterator<RealCall.AsyncCall> it2 = this.readyAsyncCalls.iterator();
while (it2.hasNext()) {
RealCall.AsyncCall next2 = it2.next();
if (C14957gcv.b((Object) next2.getHost(), (Object) str)) {
return next2;
}
}
return null;
}
public final void cancelAll() {
synchronized (this) {
Iterator<RealCall.AsyncCall> it = this.readyAsyncCalls.iterator();
while (it.hasNext()) {
it.next().getCall().cancel();
}
Iterator<RealCall.AsyncCall> it2 = this.runningAsyncCalls.iterator();
while (it2.hasNext()) {
it2.next().getCall().cancel();
}
Iterator<RealCall> it3 = this.runningSyncCalls.iterator();
while (it3.hasNext()) {
it3.next().cancel();
}
}
}
public final void executed$okhttp(RealCall realCall) {
synchronized (this) {
C14957gcv.e(realCall, "");
this.runningSyncCalls.add(realCall);
}
}
public final void finished$okhttp(RealCall.AsyncCall asyncCall) {
C14957gcv.e(asyncCall, "");
asyncCall.getCallsPerHost().decrementAndGet();
finished(this.runningAsyncCalls, asyncCall);
}
public final void finished$okhttp(RealCall realCall) {
C14957gcv.e(realCall, "");
finished(this.runningSyncCalls, realCall);
}
private final <T> void finished(Deque<T> deque, T t) {
Runnable idleCallback;
synchronized (this) {
if (!deque.remove(t)) {
throw new AssertionError("Call wasn't in-flight!");
}
idleCallback = getIdleCallback();
C14866gag c14866gag = C14866gag.c;
}
if (promoteAndExecute() || idleCallback == null) {
return;
}
idleCallback.run();
}
public final List<Call> queuedCalls() {
List<Call> unmodifiableList;
synchronized (this) {
ArrayDeque<RealCall.AsyncCall> arrayDeque = this.readyAsyncCalls;
C14957gcv.e(arrayDeque, "");
ArrayList arrayList = new ArrayList(arrayDeque instanceof Collection ? arrayDeque.size() : 10);
Iterator<T> it = arrayDeque.iterator();
while (it.hasNext()) {
arrayList.add(((RealCall.AsyncCall) it.next()).getCall());
}
unmodifiableList = Collections.unmodifiableList(arrayList);
C14957gcv.c(unmodifiableList, "");
}
return unmodifiableList;
}
public final List<Call> runningCalls() {
List<Call> unmodifiableList;
synchronized (this) {
ArrayDeque<RealCall> arrayDeque = this.runningSyncCalls;
ArrayDeque<RealCall.AsyncCall> arrayDeque2 = this.runningAsyncCalls;
C14957gcv.e(arrayDeque2, "");
ArrayList arrayList = new ArrayList(arrayDeque2 instanceof Collection ? arrayDeque2.size() : 10);
Iterator<T> it = arrayDeque2.iterator();
while (it.hasNext()) {
arrayList.add(((RealCall.AsyncCall) it.next()).getCall());
}
unmodifiableList = Collections.unmodifiableList(C14881gav.e(arrayDeque, arrayList));
C14957gcv.c(unmodifiableList, "");
}
return unmodifiableList;
}
public final int queuedCallsCount() {
int size;
synchronized (this) {
size = this.readyAsyncCalls.size();
}
return size;
}
public final int runningCallsCount() {
int size;
int size2;
synchronized (this) {
size = this.runningAsyncCalls.size();
size2 = this.runningSyncCalls.size();
}
return size + size2;
}
/* renamed from: -deprecated_executorService, reason: not valid java name */
public final ExecutorService m396deprecated_executorService() {
return executorService();
}
private final boolean promoteAndExecute() {
int i;
boolean z;
if (!Util.assertionsEnabled || !Thread.holdsLock(this)) {
ArrayList arrayList = new ArrayList();
synchronized (this) {
Iterator<RealCall.AsyncCall> it = this.readyAsyncCalls.iterator();
C14957gcv.c(it, "");
while (it.hasNext()) {
RealCall.AsyncCall next = it.next();
if (this.runningAsyncCalls.size() >= getMaxRequests()) {
break;
}
if (next.getCallsPerHost().get() < getMaxRequestsPerHost()) {
it.remove();
next.getCallsPerHost().incrementAndGet();
C14957gcv.c(next, "");
arrayList.add(next);
this.runningAsyncCalls.add(next);
}
}
z = runningCallsCount() > 0;
C14866gag c14866gag = C14866gag.c;
}
int size = arrayList.size();
for (i = 0; i < size; i++) {
((RealCall.AsyncCall) arrayList.get(i)).executeOn(executorService());
}
return z;
}
StringBuilder sb = new StringBuilder("Thread ");
sb.append((Object) Thread.currentThread().getName());
sb.append(" MUST NOT hold lock on ");
sb.append(this);
throw new AssertionError(sb.toString());
}
}