All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.pincette.rs.Combine Maven / Gradle / Ivy

package net.pincette.rs;

import java.util.concurrent.Flow.Processor;
import java.util.concurrent.Flow.Publisher;
import java.util.concurrent.Flow.Subscriber;
import java.util.concurrent.Flow.Subscription;

/**
 * Exposes the combination of a subscriber and a publisher as one processor.
 *
 * @param  the incoming value type.
 * @param  the outgoing value type.
 * @author Werner Donn\u00e9
 * @since 3.0
 */
public class Combine implements Processor {
  private final Subscriber subscriber;
  private final Publisher publisher;

  public Combine(final Subscriber subscriber, final Publisher publisher) {
    this.subscriber = subscriber;
    this.publisher = publisher;
  }

  public static  Processor combine(
      final Subscriber subscriber, final Publisher publisher) {
    return new Combine<>(subscriber, publisher);
  }

  public void onComplete() {
    if (subscriber != null) {
      subscriber.onComplete();
    }
  }

  public void onError(final Throwable throwable) {
    subscriber.onError(throwable);
  }

  public void onNext(final T item) {
    subscriber.onNext(item);
  }

  public void onSubscribe(final Subscription subscription) {
    subscriber.onSubscribe(subscription);
  }

  public void subscribe(final Subscriber subscriber) {
    publisher.subscribe(subscriber);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy