Class PublisherBasedStreamMessage<T>

java.lang.Object
com.linecorp.armeria.common.stream.PublisherBasedStreamMessage<T>
Type Parameters:
T - the type of element signaled
All Implemented Interfaces:
StreamMessage<T>, org.reactivestreams.Publisher<T>

@UnstableApi
public class PublisherBasedStreamMessage<T>
extends Object
implements StreamMessage<T>
Adapts a Publisher into a StreamMessage.
  • Constructor Details

    • PublisherBasedStreamMessage

      public PublisherBasedStreamMessage​(org.reactivestreams.Publisher<? extends T> publisher)
      Creates a new instance with the specified delegate Publisher.
  • Method Details

    • delegate

      protected final org.reactivestreams.Publisher<? extends T> delegate()
      Returns the delegate Publisher.
    • isOpen

      public boolean isOpen()
      Description copied from interface: StreamMessage
      Returns true if this stream is not closed yet. Note that a stream may not be complete even if it's closed; a stream is complete when it's fully consumed by a Subscriber.
      Specified by:
      isOpen in interface StreamMessage<T>
    • isEmpty

      public boolean isEmpty()
      Description copied from interface: StreamMessage
      Returns true if this stream has been closed and did not publish any elements. Note that this method will not return true when the stream is open even if it has not published anything so far, because it may publish something later.
      Specified by:
      isEmpty in interface StreamMessage<T>
    • subscribe

      public void subscribe​(org.reactivestreams.Subscriber<? super T> subscriber, EventExecutor executor)
      Description copied from interface: StreamMessage
      Requests to start streaming data to the specified Subscriber. If there is a problem subscribing, Subscriber.onError(Throwable) will be invoked with one of the following exceptions:
      Specified by:
      subscribe in interface StreamMessage<T>
      executor - the executor to subscribe
    • subscribe

      public void subscribe​(org.reactivestreams.Subscriber<? super T> subscriber, EventExecutor executor, SubscriptionOption... options)
      Description copied from interface: StreamMessage
      Requests to start streaming data to the specified Subscriber. If there is a problem subscribing, Subscriber.onError(Throwable) will be invoked with one of the following exceptions:
      Specified by:
      subscribe in interface StreamMessage<T>
      executor - the executor to subscribe
      options - SubscriptionOptions to subscribe with
    • abort

      public void abort()
      Description copied from interface: StreamMessage
      Closes this stream with AbortedStreamException and prevents further subscription. A Subscriber that attempts to subscribe to an aborted stream will be notified with an AbortedStreamException via Subscriber.onError(Throwable). Calling this method on a closed or aborted stream has no effect.
      Specified by:
      abort in interface StreamMessage<T>
    • abort

      public void abort​(Throwable cause)
      Description copied from interface: StreamMessage
      Closes this stream with the specified Throwable and prevents further subscription. A Subscriber that attempts to subscribe to an aborted stream will be notified with the specified Throwable via Subscriber.onError(Throwable). Calling this method on a closed or aborted stream has no effect.
      Specified by:
      abort in interface StreamMessage<T>
    • whenComplete

      public CompletableFuture<Void> whenComplete()
      Description copied from interface: StreamMessage
      Returns a CompletableFuture that completes when this stream is complete, either successfully or exceptionally, including cancellation and abortion.

      A StreamMessage is complete (or 'fully consumed') when:

      • the Subscriber consumes all elements and Subscriber.onComplete() is invoked,
      • an error occurred and Subscriber.onError(Throwable) is invoked,
      • the Subscription has been cancelled or
      • StreamMessage.abort() has been requested.
      Specified by:
      whenComplete in interface StreamMessage<T>