package com.google.common.util.concurrent; import com.airbnb.deeplinkdispatch.UrlTreeKt; import com.google.common.base.Preconditions; import java.util.ArrayDeque; import java.util.Deque; import java.util.concurrent.Executor; import java.util.concurrent.RejectedExecutionException; import java.util.logging.Logger; /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes2.dex */ public final class SequentialExecutor implements Executor { private static final Logger log = Logger.getLogger(SequentialExecutor.class.getName()); private final Executor executor; private final Deque queue = new ArrayDeque(); private WorkerRunningState workerRunningState = WorkerRunningState.IDLE; private long workerRunCount = 0; private final QueueWorker worker = new QueueWorker(); /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes2.dex */ public enum WorkerRunningState { IDLE, QUEUING, QUEUED, RUNNING } static /* synthetic */ long access$308(SequentialExecutor sequentialExecutor) { long j = sequentialExecutor.workerRunCount; sequentialExecutor.workerRunCount = 1 + j; return j; } /* JADX INFO: Access modifiers changed from: package-private */ public SequentialExecutor(Executor executor) { this.executor = (Executor) Preconditions.checkNotNull(executor); } @Override // java.util.concurrent.Executor public final void execute(Runnable runnable) { Preconditions.checkNotNull(runnable); synchronized (this.queue) { if (this.workerRunningState != WorkerRunningState.RUNNING && this.workerRunningState != WorkerRunningState.QUEUED) { long j = this.workerRunCount; Runnable runnable2 = new Runnable(this, runnable) { // from class: com.google.common.util.concurrent.SequentialExecutor.1 final Runnable val$task; { this.val$task = runnable; } @Override // java.lang.Runnable public void run() { this.val$task.run(); } public String toString() { return this.val$task.toString(); } }; this.queue.add(runnable2); this.workerRunningState = WorkerRunningState.QUEUING; try { this.executor.execute(this.worker); if (this.workerRunningState != WorkerRunningState.QUEUING) { return; } synchronized (this.queue) { if (this.workerRunCount == j && this.workerRunningState == WorkerRunningState.QUEUING) { this.workerRunningState = WorkerRunningState.QUEUED; } } return; } catch (Error | RuntimeException e) { synchronized (this.queue) { boolean z = (this.workerRunningState == WorkerRunningState.IDLE || this.workerRunningState == WorkerRunningState.QUEUING) && this.queue.removeLastOccurrence(runnable2); if (!(e instanceof RejectedExecutionException) || z) { throw e; } } return; } } this.queue.add(runnable); } } /* loaded from: classes2.dex */ final class QueueWorker implements Runnable { Runnable task; final SequentialExecutor this$0; private QueueWorker(SequentialExecutor sequentialExecutor) { this.this$0 = sequentialExecutor; } @Override // java.lang.Runnable public final void run() { try { workOnQueue(); } catch (Error e) { synchronized (this.this$0.queue) { this.this$0.workerRunningState = WorkerRunningState.IDLE; throw e; } } } /* JADX WARN: Code restructure failed: missing block: B:10:0x0054, code lost: r0 = r0 | java.lang.Thread.interrupted(); */ /* JADX WARN: Code restructure failed: missing block: B:12:0x0056, code lost: r9.task.run(); */ /* JADX WARN: Code restructure failed: missing block: B:16:0x005e, code lost: r3 = move-exception; */ /* JADX WARN: Code restructure failed: missing block: B:17:0x005f, code lost: r4 = com.google.common.util.concurrent.SequentialExecutor.log; r5 = java.util.logging.Level.SEVERE; r6 = java.lang.String.valueOf(r9.task); r8 = new java.lang.StringBuilder(java.lang.String.valueOf(r6).length() + 35); r8.append("Exception while executing runnable "); r8.append(r6); r4.log(r5, r8.toString(), (java.lang.Throwable) r3); */ /* JADX WARN: Code restructure failed: missing block: B:19:0x005c, code lost: r1 = move-exception; */ /* JADX WARN: Code restructure failed: missing block: B:20:0x008d, code lost: r9.task = null; */ /* JADX WARN: Code restructure failed: missing block: B:21:0x008f, code lost: throw r1; */ /* JADX WARN: Code restructure failed: missing block: B:24:0x003d, code lost: r9.this$0.workerRunningState = com.google.common.util.concurrent.SequentialExecutor.WorkerRunningState.IDLE; */ /* JADX WARN: Code restructure failed: missing block: B:28:0x004e, code lost: return; */ /* JADX WARN: Code restructure failed: missing block: B:29:?, code lost: return; */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ private void workOnQueue() { /* r9 = this; r0 = 0 r1 = r0 L2: com.google.common.util.concurrent.SequentialExecutor r2 = r9.this$0 // Catch: java.lang.Throwable -> L93 java.util.Deque r2 = com.google.common.util.concurrent.SequentialExecutor.access$100(r2) // Catch: java.lang.Throwable -> L93 monitor-enter(r2) // Catch: java.lang.Throwable -> L93 if (r1 != 0) goto L2d com.google.common.util.concurrent.SequentialExecutor r1 = r9.this$0 // Catch: java.lang.Throwable -> L90 com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState r1 = com.google.common.util.concurrent.SequentialExecutor.access$200(r1) // Catch: java.lang.Throwable -> L90 com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState r3 = com.google.common.util.concurrent.SequentialExecutor.WorkerRunningState.RUNNING // Catch: java.lang.Throwable -> L90 if (r1 != r3) goto L20 monitor-exit(r2) if (r0 == 0) goto L1f java.lang.Thread r0 = java.lang.Thread.currentThread() r0.interrupt() L1f: return L20: com.google.common.util.concurrent.SequentialExecutor r1 = r9.this$0 // Catch: java.lang.Throwable -> L90 com.google.common.util.concurrent.SequentialExecutor.access$308(r1) // Catch: java.lang.Throwable -> L90 com.google.common.util.concurrent.SequentialExecutor r1 = r9.this$0 // Catch: java.lang.Throwable -> L90 com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState r3 = com.google.common.util.concurrent.SequentialExecutor.WorkerRunningState.RUNNING // Catch: java.lang.Throwable -> L90 com.google.common.util.concurrent.SequentialExecutor.access$202(r1, r3) // Catch: java.lang.Throwable -> L90 r1 = 1 L2d: com.google.common.util.concurrent.SequentialExecutor r3 = r9.this$0 // Catch: java.lang.Throwable -> L90 java.util.Deque r3 = com.google.common.util.concurrent.SequentialExecutor.access$100(r3) // Catch: java.lang.Throwable -> L90 java.lang.Object r3 = r3.poll() // Catch: java.lang.Throwable -> L90 java.lang.Runnable r3 = (java.lang.Runnable) r3 // Catch: java.lang.Throwable -> L90 r9.task = r3 // Catch: java.lang.Throwable -> L90 if (r3 != 0) goto L4f com.google.common.util.concurrent.SequentialExecutor r1 = r9.this$0 // Catch: java.lang.Throwable -> L90 com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState r3 = com.google.common.util.concurrent.SequentialExecutor.WorkerRunningState.IDLE // Catch: java.lang.Throwable -> L90 com.google.common.util.concurrent.SequentialExecutor.access$202(r1, r3) // Catch: java.lang.Throwable -> L90 monitor-exit(r2) if (r0 == 0) goto L4e java.lang.Thread r0 = java.lang.Thread.currentThread() r0.interrupt() L4e: return L4f: monitor-exit(r2) boolean r2 = java.lang.Thread.interrupted() // Catch: java.lang.Throwable -> L93 r0 = r0 | r2 r2 = 0 java.lang.Runnable r3 = r9.task // Catch: java.lang.Throwable -> L5c java.lang.RuntimeException -> L5e r3.run() // Catch: java.lang.Throwable -> L5c java.lang.RuntimeException -> L5e goto L89 L5c: r1 = move-exception goto L8d L5e: r3 = move-exception java.util.logging.Logger r4 = com.google.common.util.concurrent.SequentialExecutor.access$400() // Catch: java.lang.Throwable -> L5c java.util.logging.Level r5 = java.util.logging.Level.SEVERE // Catch: java.lang.Throwable -> L5c java.lang.Runnable r6 = r9.task // Catch: java.lang.Throwable -> L5c java.lang.String r6 = java.lang.String.valueOf(r6) // Catch: java.lang.Throwable -> L5c java.lang.String r7 = java.lang.String.valueOf(r6) // Catch: java.lang.Throwable -> L5c int r7 = r7.length() // Catch: java.lang.Throwable -> L5c java.lang.StringBuilder r8 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> L5c int r7 = r7 + 35 r8.(r7) // Catch: java.lang.Throwable -> L5c java.lang.String r7 = "Exception while executing runnable " r8.append(r7) // Catch: java.lang.Throwable -> L5c r8.append(r6) // Catch: java.lang.Throwable -> L5c java.lang.String r6 = r8.toString() // Catch: java.lang.Throwable -> L5c r4.log(r5, r6, r3) // Catch: java.lang.Throwable -> L5c L89: r9.task = r2 // Catch: java.lang.Throwable -> L93 goto L2 L8d: r9.task = r2 // Catch: java.lang.Throwable -> L93 throw r1 // Catch: java.lang.Throwable -> L93 L90: r1 = move-exception monitor-exit(r2) throw r1 // Catch: java.lang.Throwable -> L93 L93: r1 = move-exception if (r0 == 0) goto L9d java.lang.Thread r0 = java.lang.Thread.currentThread() r0.interrupt() L9d: throw r1 */ throw new UnsupportedOperationException("Method not decompiled: com.google.common.util.concurrent.SequentialExecutor.QueueWorker.workOnQueue():void"); } public final String toString() { Runnable runnable = this.task; if (runnable == null) { String valueOf = String.valueOf(this.this$0.workerRunningState); StringBuilder sb = new StringBuilder(String.valueOf(valueOf).length() + 32); sb.append("SequentialExecutorWorker{state="); sb.append(valueOf); sb.append(UrlTreeKt.componentParamSuffix); return sb.toString(); } String valueOf2 = String.valueOf(runnable); StringBuilder sb2 = new StringBuilder(String.valueOf(valueOf2).length() + 34); sb2.append("SequentialExecutorWorker{running="); sb2.append(valueOf2); sb2.append(UrlTreeKt.componentParamSuffix); return sb2.toString(); } } public final String toString() { int identityHashCode = System.identityHashCode(this); String valueOf = String.valueOf(this.executor); StringBuilder sb = new StringBuilder(String.valueOf(valueOf).length() + 32); sb.append("SequentialExecutor@"); sb.append(identityHashCode); sb.append(UrlTreeKt.componentParamPrefix); sb.append(valueOf); sb.append(UrlTreeKt.componentParamSuffix); return sb.toString(); } }