Class JerseyPublisher<T>

java.lang.Object
org.glassfish.jersey.internal.util.JerseyPublisher<T>
All Implemented Interfaces:
Flow.Publisher<T>

public class JerseyPublisher<T> extends Object implements Flow.Publisher<T>
Implementation of Flow.Publisher corresponding to reactive streams specification.

Delegates to SubmissionPublisher repackaged from jsr166 on JDK 8 or to JDK SubmissionPublisher.

Author:
Adam Lindenthal
  • Constructor Details

  • Method Details

    • subscribe

      public void subscribe(Flow.Subscriber<? super T> subscriber)
      Description copied from interface: Flow.Publisher
      Adds the given Subscriber if possible. If already subscribed, or the attempt to subscribe fails due to policy violations or errors, the Subscriber's onError method is invoked with an IllegalStateException. Otherwise, the Subscriber's onSubscribe method is invoked with a new Flow.Subscription. Subscribers may enable receiving items by invoking the request method of this Subscription, and may unsubscribe by invoking its cancel method.
      Specified by:
      subscribe in interface Flow.Publisher<T>
      Parameters:
      subscriber - the subscriber
    • consume

      public CompletableFuture<Void> consume(Consumer<? super T> consumer)
      Processes all published items using the given Consumer function. Returns a CompletableFuture that is completed normally when this publisher signals onComplete(), or completed exceptionally upon any error, or an exception is thrown by the Consumer, or the returned CompletableFuture is cancelled, in which case no further items are processed.
      Parameters:
      consumer - function to process all published data
      Returns:
      a CompletableFuture that is completed normally when the publisher signals onComplete, and exceptionally upon any error or cancellation
      Throws:
      NullPointerException - if consumer is null
    • publish

      public int publish(T item)
      Publishes the given item to all current subscribers by invoking its onNext() method using Executor provided as constructor parameter (or the default Executor if not provided).

      Concrete behaviour is specified by JerseyPublisher.PublisherStrategy selected upon JerseyPublisher creation.

      Parameters:
      item - the (non-null) item to publish.
      Returns:
      if negative, the (negative) number of drops; otherwise an estimate of maximum lag.
      Throws:
      IllegalStateException - if closed
      NullPointerException - if item is null
      RejectedExecutionException - if thrown by Executor
    • close

      public void close()
      Unless already closed, issues onComplete() signals to current subscribers, and disallows subsequent attempts to publish. Upon return, this method does NOT guarantee that all subscribers have yet completed.
    • close

      public void close(boolean cascading)
      Same as close() but with control as to whether registered subscribers should be closed or not.
      Parameters:
      cascading - Boolean controlling whether to close subscribers or not.
    • closeExceptionally

      public void closeExceptionally(Throwable error)
      Issues onError signals to current subscribers with the given error, and disallows subsequent attempts to publish.
      Parameters:
      error - the onError argument sent to subscribers
      Throws:
      NullPointerException - if error is null
    • estimateMaximumLag

      public int estimateMaximumLag()
      Returns an estimate of the maximum number of items produced but not yet consumed among all current subscribers.
      Returns:
      estimated maximum lag
    • estimateMinimumDemand

      public long estimateMinimumDemand()
      Returns an estimate of the minimum number of items requested but not yet produced, among all current subscribers.
      Returns:
      estimated minimum demand
    • getClosedException

      public Throwable getClosedException()
      Returns the exception associated with closeExceptionally(java.lang.Throwable), or null if not closed or if closed normally.
      Returns:
      exception thrown on closing or null
    • getMaxBufferCapacity

      public int getMaxBufferCapacity()
      Returns the maximum per-subscriber buffer capacity.
      Returns:
      the maximum per-subscriber buffer capacity