Class AbstractListenerWriteFlushProcessor<T>
java.lang.Object
org.springframework.http.server.reactive.AbstractListenerWriteFlushProcessor<T>
- Type Parameters:
T- the type of element signaled to theSubscriber
- All Implemented Interfaces:
Processor<Publisher<? extends T>,,Void> Publisher<Void>,Subscriber<Publisher<? extends T>>
public abstract class AbstractListenerWriteFlushProcessor<T>
extends Object
implements Processor<Publisher<? extends T>,Void>
An alternative to
AbstractListenerWriteProcessor but instead writing
a Publisher<Publisher<T>> with flush boundaries enforces after
the completion of each nested Publisher.- Since:
- 5.0
- Author:
- Arjen Poutsma, Violeta Georgieva, Rossen Stoyanchev
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final LogSpecial logger for debugging Reactive Streams signals. -
Constructor Summary
ConstructorsConstructorDescriptionAbstractListenerWriteFlushProcessor(String logPrefix) Create an instance with the given log prefix. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcancel()Cancel the upstream chain of "write" Publishers only, for example due to Servlet container error/completion notifications.Create a new processor for the current flush boundary.protected abstract voidflush()Flush the output if ready, or otherwiseisFlushPending()should return true after.protected voidInvoked when an error happens while flushing.Create an instance with the given log prefix.protected abstract booleanWhether flushing is pending.protected abstract booleanWhether writing/flushing is possible.final voidCompletion signal from the upstream, write Publisher.final voidError signal from the upstream, write Publisher.protected final voidInvoked when flushing is possible, either in the same thread after a check viaisWritePossible(), or as a callback from the underlying container.final voidfinal voidonSubscribe(Subscription subscription) final voidsubscribe(Subscriber<? super Void> subscriber)
-
Field Details
-
rsWriteFlushLogger
Special logger for debugging Reactive Streams signals.- See Also:
-
LogDelegateFactory.getHiddenLog(Class)AbstractListenerReadPublisher.rsReadLoggerAbstractListenerWriteProcessor.rsWriteLoggerWriteResultPublisher.rsWriteResultLogger
-
-
Constructor Details
-
AbstractListenerWriteFlushProcessor
public AbstractListenerWriteFlushProcessor() -
AbstractListenerWriteFlushProcessor
Create an instance with the given log prefix.- Since:
- 5.1
-
-
Method Details
-
getLogPrefix
Create an instance with the given log prefix.- Since:
- 5.1
-
onSubscribe
- Specified by:
onSubscribein interfaceSubscriber<T>
-
onNext
- Specified by:
onNextin interfaceSubscriber<T>
-
onError
Error signal from the upstream, write Publisher. This is also used by sub-classes to delegate error notifications from the container.- Specified by:
onErrorin interfaceSubscriber<T>
-
onComplete
public final void onComplete()Completion signal from the upstream, write Publisher. This is also used by sub-classes to delegate completion notifications from the container.- Specified by:
onCompletein interfaceSubscriber<T>
-
onFlushPossible
protected final void onFlushPossible()Invoked when flushing is possible, either in the same thread after a check viaisWritePossible(), or as a callback from the underlying container. -
cancel
protected void cancel()Cancel the upstream chain of "write" Publishers only, for example due to Servlet container error/completion notifications. This should usually be followed up with a call to eitheronError(Throwable)oronComplete()to notify the downstream chain, that is unless cancellation came from downstream. -
subscribe
-
createWriteProcessor
Create a new processor for the current flush boundary. -
isWritePossible
protected abstract boolean isWritePossible()Whether writing/flushing is possible. -
flush
Flush the output if ready, or otherwiseisFlushPending()should return true after.This is primarily for the Servlet non-blocking I/O API where flush cannot be called without a readyToWrite check.
- Throws:
IOException
-
isFlushPending
protected abstract boolean isFlushPending()Whether flushing is pending.This is primarily for the Servlet non-blocking I/O API where flush cannot be called without a readyToWrite check.
-
flushingFailed
Invoked when an error happens while flushing.The default implementation cancels the upstream write publisher and sends an onError downstream as the result of request handling.
-