
net.pincette.rs.Box Maven / Gradle / Ivy
package net.pincette.rs;
import java.util.concurrent.Flow.Processor;
import java.util.concurrent.Flow.Subscriber;
import java.util.concurrent.Flow.Subscription;
/**
* Combines two processors as one.
*
* @param the incoming value type.
* @param the outgoing value type.
* @author Werner Donn\u00e9
* @since 3.0
*/
public class Box implements Processor {
protected final Processor first;
protected final Processor second;
public Box(final Processor first, final Processor second) {
this.first = first;
this.second = second;
first.subscribe(second);
}
public static Processor box(
final Processor first, final Processor second) {
return new Box<>(first, second);
}
public void onComplete() {
first.onComplete();
}
public void onError(final Throwable t) {
first.onError(t);
}
public void onNext(final T value) {
first.onNext(value);
}
public void onSubscribe(final Subscription subscription) {
first.onSubscribe(subscription);
}
public void subscribe(final Subscriber super R> subscriber) {
if (subscriber == null) {
throw new NullPointerException("A subscriber can't be null.");
}
second.subscribe(subscriber);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy