类 AbstractListenerWriteProcessor<T>
- java.lang.Object
- org.springframework.http.server.reactive.AbstractListenerWriteProcessor<T>
- 类型参数:
T
- the type of element signaled to theSubscriber
- 所有已实现的接口:
org.reactivestreams.Processor<T,Void>
,org.reactivestreams.Publisher<Void>
,org.reactivestreams.Subscriber<T>
public abstract class AbstractListenerWriteProcessor<T> extends Object implements org.reactivestreams.Processor<T,Void>
Abstract base class forProcessor
implementations that bridge between event-listener write APIs and Reactive Streams.Specifically a base class for writing to the HTTP response body with Servlet 3.1 non-blocking I/O and Undertow XNIO as well for writing WebSocket messages through the Java WebSocket API (JSR-356), Jetty, and Undertow.
- 从以下版本开始:
- 5.0
- 作者:
- Arjen Poutsma, Violeta Georgieva, Rossen Stoyanchev
字段概要
字段 修饰符和类型 字段 说明 protected static Log
rsWriteLogger
Special logger for debugging Reactive Streams signals.
构造器概要
构造器 构造器 说明 AbstractListenerWriteProcessor()
AbstractListenerWriteProcessor(String logPrefix)
Create an instance with the given log prefix.
方法概要
所有方法 实例方法 抽象方法 具体方法 已过时的方法 修饰符和类型 方法 说明 void
cancel()
Invoked during an error or completion callback from the underlying container to cancel the upstream subscription.protected void
dataReceived(T data)
Template method invoked after a data item to write is received viaSubscriber.onNext(Object)
.protected abstract void
discardData(T data)
Invoked after any error (either from the upstream write Publisher, or from I/O operations to the underlying server) and cancellation to discard in-flight data that was in the process of being written when the error took place.String
getLogPrefix()
Get the configured log prefix.protected abstract boolean
isDataEmpty(T data)
Whether the given data item has any content to write.protected abstract boolean
isWritePossible()
Whether writing is possible.void
onComplete()
Completion signal from the upstream, write Publisher.void
onError(Throwable ex)
Error signal from the upstream, write Publisher.void
onNext(T data)
void
onSubscribe(org.reactivestreams.Subscription subscription)
void
onWritePossible()
Invoked when writing is possible, either in the same thread after a check viaisWritePossible()
, or as a callback from the underlying container.void
subscribe(org.reactivestreams.Subscriber<? super Void> subscriber)
protected abstract boolean
write(T data)
Write the given item.protected void
writingComplete()
Invoked after onComplete or onError notification.protected void
writingFailed(Throwable ex)
Invoked when an I/O error occurs during a write.protected void
writingPaused()
已过时。originally introduced for Undertow to stop write notifications when no data is available, but deprecated as of as of 5.0.6 since constant switching on every requested item causes a significant slowdown.
字段详细资料
rsWriteLogger
protected static final Log rsWriteLogger
Special logger for debugging Reactive Streams signals.- 另请参阅:
LogDelegateFactory.getHiddenLog(Class)
,AbstractListenerReadPublisher.rsReadLogger
,AbstractListenerWriteFlushProcessor.rsWriteFlushLogger
,WriteResultPublisher.rsWriteResultLogger
构造器详细资料
AbstractListenerWriteProcessor
public AbstractListenerWriteProcessor()
AbstractListenerWriteProcessor
public AbstractListenerWriteProcessor(String logPrefix)
Create an instance with the given log prefix.- 从以下版本开始:
- 5.1
方法详细资料
getLogPrefix
public String getLogPrefix()
Get the configured log prefix.- 从以下版本开始:
- 5.1
onSubscribe
public final void onSubscribe(org.reactivestreams.Subscription subscription)
- 指定者:
onSubscribe
在接口中org.reactivestreams.Subscriber<T>
onError
public final void onError(Throwable ex)
Error signal from the upstream, write Publisher. This is also used by sub-classes to delegate error notifications from the container.- 指定者:
onError
在接口中org.reactivestreams.Subscriber<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.- 指定者:
onComplete
在接口中org.reactivestreams.Subscriber<T>
onWritePossible
public final void onWritePossible()
Invoked when writing is possible, either in the same thread after a check viaisWritePossible()
, or as a callback from the underlying container.
cancel
public void cancel()
Invoked during an error or completion callback from the underlying container to cancel the upstream subscription.
subscribe
public final void subscribe(org.reactivestreams.Subscriber<? super Void> subscriber)
- 指定者:
subscribe
在接口中org.reactivestreams.Publisher<T>
isDataEmpty
protected abstract boolean isDataEmpty(T data)
Whether the given data item has any content to write. If false the item is not written.
dataReceived
protected void dataReceived(T data)
Template method invoked after a data item to write is received viaSubscriber.onNext(Object)
. The default implementation saves the data item for writing once that is possible.
isWritePossible
protected abstract boolean isWritePossible()
Whether writing is possible.
write
protected abstract boolean write(T data) throws IOException
Write the given item.Note: Sub-classes are responsible for releasing any data buffer associated with the item, once fully written, if pooled buffers apply to the underlying container.
- 参数:
data
- the item to write- 返回:
true
if the current data item was written completely and a new item requested, orfalse
if it was written partially and we'll need more write callbacks before it is fully written- 抛出:
IOException
writingPaused
@Deprecated protected void writingPaused()
已过时。originally introduced for Undertow to stop write notifications when no data is available, but deprecated as of as of 5.0.6 since constant switching on every requested item causes a significant slowdown.Invoked after the current data has been written and before requesting the next item from the upstream, write Publisher.The default implementation is a no-op.
writingComplete
protected void writingComplete()
Invoked after onComplete or onError notification.The default implementation is a no-op.
writingFailed
protected void writingFailed(Throwable ex)
Invoked when an I/O error occurs during a write. Sub-classes may choose to ignore this if they know the underlying API will provide an error notification in a container thread.Defaults to no-op.
discardData
protected abstract void discardData(T data)
Invoked after any error (either from the upstream write Publisher, or from I/O operations to the underlying server) and cancellation to discard in-flight data that was in the process of being written when the error took place.- 参数:
data
- the data to be released- 从以下版本开始:
- 5.0.11