Module id.xfunction
Package id.xfunction.concurrent.flow
Class FixedCollectorSubscriber<T,C extends Collection<T>>
Object
SimpleSubscriber<T>
FixedCollectorSubscriber<T,C>
- All Implemented Interfaces:
ReplayableSubscriber<T>
,Flow.Subscriber<T>
Subscriber which collects fixed number of items to target collection.
When target collection size reaches maxSize:
- subscription is canceled
- future which is maintained by this subscriber completes
Example:
// subscriber collects 5 items to ArrayList and then cancels subscription
var subscriber = new FixedCollectorSubscriber<>(new ArrayList<String>(), 5);
publisher.subscribe(subscriber);
// wait for 5 items and print them to console
System.out.println(subscriber.getFuture().get().toString());
-
Field Summary
Fields inherited from class SimpleSubscriber
subscription
-
Constructor Summary
ConstructorDescriptionFixedCollectorSubscriber
(C targetCollection, int maxSize) FixedCollectorSubscriber
(C targetCollection, int maxSize, Duration timeout) -
Method Summary
Modifier and TypeMethodDescriptionvoid
Emptyvoid
onSubscribe
(Flow.Subscription subscription) Saves subscription and requestsSimpleSubscriber.withInitialRequest(int)
number of items.void
EmptywithMessageConsumer
(Consumer<T> consumer) Setup additional message consumer.Methods inherited from class SimpleSubscriber
getSubscription, isSubscribed, onComplete, onError, withInitialRequest
-
Constructor Details
-
FixedCollectorSubscriber
-
FixedCollectorSubscriber
- Parameters:
timeout
- complete the future by timeout with whatever number of items received into targetCollection (may be less than maxSize)
-
-
Method Details
-
withMessageConsumer
Setup additional message consumer.Can be used to print all received messages to
System.out
subscriber.withMessageConsumer(System.out::println);
-
replay
Description copied from class:SimpleSubscriber
Empty- Specified by:
replay
in interfaceReplayableSubscriber<T>
- Overrides:
replay
in classSimpleSubscriber<T>
-
onSubscribe
Description copied from class:SimpleSubscriber
Saves subscription and requestsSimpleSubscriber.withInitialRequest(int)
number of items.- Specified by:
onSubscribe
in interfaceFlow.Subscriber<T>
- Overrides:
onSubscribe
in classSimpleSubscriber<T>
- Throws:
PreconditionException
- if subscriber is already subscribed
-
onNext
Description copied from class:SimpleSubscriber
Empty- Specified by:
onNext
in interfaceFlow.Subscriber<T>
- Overrides:
onNext
in classSimpleSubscriber<T>
-
getFuture
-