CrackMe.apk
Download file
package com.facebook.imagepipeline.producers;
import android.util.Pair;
import com.facebook.common.internal.Preconditions;
import java.util.Map;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor;
import javax.annotation.Nullable;
public class ThrottlingProducer<T> implements Producer<T> {
public static final String PRODUCER_NAME = "ThrottlingProducer";
/* access modifiers changed from: private */
public final Executor mExecutor;
private final Producer<T> mInputProducer;
private final int mMaxSimultaneousRequests;
private int mNumCurrentRequests = 0;
/* access modifiers changed from: private */
public final ConcurrentLinkedQueue<Pair<Consumer<T>, ProducerContext>> mPendingRequests = new ConcurrentLinkedQueue<>();
static /* synthetic */ int access$210(ThrottlingProducer throttlingProducer) {
int i = throttlingProducer.mNumCurrentRequests;
throttlingProducer.mNumCurrentRequests = i - 1;
return i;
}
public ThrottlingProducer(int i, Executor executor, Producer<T> producer) {
this.mMaxSimultaneousRequests = i;
this.mExecutor = (Executor) Preconditions.checkNotNull(executor);
this.mInputProducer = (Producer) Preconditions.checkNotNull(producer);
}
public void produceResults(Consumer<T> consumer, ProducerContext producerContext) {
boolean z;
producerContext.getProducerListener().onProducerStart(producerContext, PRODUCER_NAME);
synchronized (this) {
int i = this.mNumCurrentRequests;
z = true;
if (i >= this.mMaxSimultaneousRequests) {
this.mPendingRequests.add(Pair.create(consumer, producerContext));
} else {
this.mNumCurrentRequests = i + 1;
z = false;
}
}
if (!z) {
produceResultsInternal(consumer, producerContext);
}
}
/* access modifiers changed from: package-private */
public void produceResultsInternal(Consumer<T> consumer, ProducerContext producerContext) {
producerContext.getProducerListener().onProducerFinishWithSuccess(producerContext, PRODUCER_NAME, (Map<String, String>) null);
this.mInputProducer.produceResults(new ThrottlerConsumer(consumer), producerContext);
}
private class ThrottlerConsumer extends DelegatingConsumer<T, T> {
private ThrottlerConsumer(Consumer<T> consumer) {
super(consumer);
}
/* access modifiers changed from: protected */
public void onNewResultImpl(@Nullable T t, int i) {
getConsumer().onNewResult(t, i);
if (isLast(i)) {
onRequestFinished();
}
}
/* access modifiers changed from: protected */
public void onFailureImpl(Throwable th) {
getConsumer().onFailure(th);
onRequestFinished();
}
/* access modifiers changed from: protected */
public void onCancellationImpl() {
getConsumer().onCancellation();
onRequestFinished();
}
private void onRequestFinished() {
final Pair pair;
synchronized (ThrottlingProducer.this) {
pair = (Pair) ThrottlingProducer.this.mPendingRequests.poll();
if (pair == null) {
ThrottlingProducer.access$210(ThrottlingProducer.this);
}
}
if (pair != null) {
ThrottlingProducer.this.mExecutor.execute(new Runnable() {
public void run() {
ThrottlingProducer.this.produceResultsInternal((Consumer) pair.first, (ProducerContext) pair.second);
}
});
}
}
}
}
Download file