类 AbstractListenerWriteProcessor<T>

java.lang.Object
cn.taketoday.http.server.reactive.AbstractListenerWriteProcessor<T>
类型参数:
T - the type of element signaled to the Subscriber
所有已实现的接口:
org.reactivestreams.Processor<T,Void>, org.reactivestreams.Publisher<Void>, org.reactivestreams.Subscriber<T>
直接已知子类:
ServletServerHttpResponse.ResponseBodyProcessor, UndertowServerHttpResponse.ResponseBodyProcessor

public abstract class AbstractListenerWriteProcessor<T> extends Object implements org.reactivestreams.Processor<T,Void>
Abstract base class for Processor 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.

从以下版本开始:
4.0
作者:
Arjen Poutsma, Violeta Georgieva, Rossen Stoyanchev
  • 字段详细资料

  • 构造器详细资料

    • AbstractListenerWriteProcessor

      public AbstractListenerWriteProcessor()
    • AbstractListenerWriteProcessor

      public AbstractListenerWriteProcessor(String logPrefix)
      Create an instance with the given log prefix.
  • 方法详细资料

    • getLogPrefix

      public String getLogPrefix()
      Get the configured log prefix.
    • onSubscribe

      public final void onSubscribe(org.reactivestreams.Subscription subscription)
      指定者:
      onSubscribe 在接口中 org.reactivestreams.Subscriber<T>
    • onNext

      public final void onNext(T data)
      指定者:
      onNext 在接口中 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 via isWritePossible(), or as a callback from the underlying container.
    • cancel

      public void cancel()
      Cancel the upstream "write" Publisher only, for example due to Servlet container error/completion notifications. This should usually be followed up with a call to either onError(Throwable) or onComplete() to notify the downstream chain, that is unless cancellation came from downstream.
    • cancelAndSetCompleted

      void cancelAndSetCompleted()
      Cancel the "write" Publisher and transition to COMPLETED immediately also without notifying the downstream. For use when cancellation came from downstream.
    • 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 via Subscriber.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, or false if it was written partially and we'll need more write callbacks before it is fully written
      抛出:
      IOException
    • writingPaused

      protected void writingPaused()
      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
      从以下版本开始:
      4.0
    • changeState

      private boolean changeState(AbstractListenerWriteProcessor.State oldState, AbstractListenerWriteProcessor.State newState)
    • changeStateToReceived

      private void changeStateToReceived(AbstractListenerWriteProcessor.State oldState)
    • changeStateToComplete

      private void changeStateToComplete(AbstractListenerWriteProcessor.State oldState)
    • writeIfPossible

      private void writeIfPossible()
    • discardCurrentData

      private void discardCurrentData()