/*
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.imagepipeline.producers;
/**
* Swallow result producer.
*
* <p>This producer just inserts a consumer that swallows results into the stack of consumers.
*/
public class SwallowResultProducer<T> implements Producer<Void> {
private final Producer<T> mNextProducer;
public SwallowResultProducer(Producer<T> nextProducer) {
mNextProducer = nextProducer;
}
@Override
public void produceResults(
final Consumer<Void> consumer,
final ProducerContext producerContext) {
BaseConsumer<T> swallowResultConsumer = new BaseConsumer<T>() {
@Override
protected void onNewResultImpl(T newResult, boolean isLast) {
if (isLast) {
consumer.onNewResult(null, isLast);
}
}
@Override
protected void onFailureImpl(Throwable t) {
consumer.onFailure(t);
}
@Override
protected void onCancellationImpl() {
consumer.onCancellation();
}
};
mNextProducer.produceResults(swallowResultConsumer, producerContext);
}
}