/*************************************************** * Licensed under MIT No Attribution (SPDX: MIT-0) * ***************************************************/ package org.reactivestreams; /** * Will receive call to {@link #onSubscribe(Subscription)} once after passing an instance of {@link Subscriber} to {@link Publisher#subscribe(Subscriber)}. *

* No further notifications will be received until {@link Subscription#request(long)} is called. *

* After signaling demand: *

*

* Demand can be signaled via {@link Subscription#request(long)} whenever the {@link Subscriber} instance is capable of handling more. * * @param the type of element signaled */ public interface Subscriber { /** * Invoked after calling {@link Publisher#subscribe(Subscriber)}. *

* No data will start flowing until {@link Subscription#request(long)} is invoked. *

* It is the responsibility of this {@link Subscriber} instance to call {@link Subscription#request(long)} whenever more data is wanted. *

* The {@link Publisher} will send notifications only in response to {@link Subscription#request(long)}. * * @param s the {@link Subscription} that allows requesting data via {@link Subscription#request(long)} */ public void onSubscribe(Subscription s); /** * Data notification sent by the {@link Publisher} in response to requests to {@link Subscription#request(long)}. * * @param t the element signaled */ public void onNext(T t); /** * Failed terminal state. *

* No further events will be sent even if {@link Subscription#request(long)} is invoked again. * * @param t the throwable signaled */ public void onError(Throwable t); /** * Successful terminal state. *

* No further events will be sent even if {@link Subscription#request(long)} is invoked again. */ public void onComplete(); }