51 lines
1.4 KiB
Java
51 lines
1.4 KiB
Java
package com.google.firebase.concurrent;
|
|
|
|
import java.util.concurrent.Executor;
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* loaded from: classes3.dex */
|
|
public final class PausableExecutorImpl implements PausableExecutor {
|
|
private final Executor delegate;
|
|
private volatile boolean paused;
|
|
final LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<>();
|
|
|
|
public PausableExecutorImpl(boolean z3, Executor executor) {
|
|
this.paused = z3;
|
|
this.delegate = executor;
|
|
}
|
|
|
|
private void maybeEnqueueNext() {
|
|
if (this.paused) {
|
|
return;
|
|
}
|
|
Runnable poll = this.queue.poll();
|
|
while (poll != null) {
|
|
this.delegate.execute(poll);
|
|
poll = !this.paused ? this.queue.poll() : null;
|
|
}
|
|
}
|
|
|
|
@Override // java.util.concurrent.Executor
|
|
public void execute(Runnable runnable) {
|
|
this.queue.offer(runnable);
|
|
maybeEnqueueNext();
|
|
}
|
|
|
|
@Override // com.google.firebase.concurrent.PausableExecutor
|
|
public boolean isPaused() {
|
|
return this.paused;
|
|
}
|
|
|
|
@Override // com.google.firebase.concurrent.PausableExecutor
|
|
public void pause() {
|
|
this.paused = true;
|
|
}
|
|
|
|
@Override // com.google.firebase.concurrent.PausableExecutor
|
|
public void resume() {
|
|
this.paused = false;
|
|
maybeEnqueueNext();
|
|
}
|
|
}
|