Class SyncSubscriber<T>
java.lang.Object
org.reactivestreams.example.unicast.SyncSubscriber<T>
- All Implemented Interfaces:
Subscriber<T>
SyncSubscriber is an implementation of Reactive Streams `Subscriber`,
it runs synchronously (on the Publisher's thread) and requests one element
at a time and invokes a user-defined method to process each element.
NOTE: The code below uses a lot of try-catches to show the reader where exceptions can be expected, and where they are forbidden.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voiddone()voidSuccessful terminal state.voidFailed terminal state.voidData notification sent by thePublisherin response to requests toSubscription.request(long).voidInvoked after callingPublisher.subscribe(Subscriber).protected abstract boolean
-
Field Details
-
subscription
-
done
private boolean done
-
-
Constructor Details
-
SyncSubscriber
public SyncSubscriber()
-
-
Method Details
-
onSubscribe
Description copied from interface:SubscriberInvoked after callingPublisher.subscribe(Subscriber).No data will start flowing until
Subscription.request(long)is invoked.It is the responsibility of this
Subscriberinstance to callSubscription.request(long)whenever more data is wanted.The
Publisherwill send notifications only in response toSubscription.request(long).- Specified by:
onSubscribein interfaceSubscriber<T>- Parameters:
s- theSubscriptionthat allows requesting data viaSubscription.request(long)
-
onNext
Description copied from interface:SubscriberData notification sent by thePublisherin response to requests toSubscription.request(long).- Specified by:
onNextin interfaceSubscriber<T>- Parameters:
element- the element signaled
-
done
private void done() -
whenNext
-
onError
Description copied from interface:SubscriberFailed terminal state.No further events will be sent even if
Subscription.request(long)is invoked again.- Specified by:
onErrorin interfaceSubscriber<T>- Parameters:
t- the throwable signaled
-
onComplete
public void onComplete()Description copied from interface:SubscriberSuccessful terminal state.No further events will be sent even if
Subscription.request(long)is invoked again.- Specified by:
onCompletein interfaceSubscriber<T>
-