Interface Processor<I,​O>

Type Parameters:
I - The type observed
O - The type produced
All Superinterfaces:
Publisher<O>, Subscriber<I>
All Known Subinterfaces:
Processor.Iso<V>, Processor.Transactional<I,​O>, Processor.TransactionalIso<V>

public interface Processor<I,​O>
extends Publisher<O>, Subscriber<I>
A combination of an Publisher and Subscriber.

Processors are expected to broadcast their submitted values to any registered observers, though filtering or other transformations may be applied.

Submitting a completion event to the processor will result in a completion event being passed to every subscriber, and the rejection of further events being submitted.

  • Method Details

    • create

      static <V> Processor.Iso<V> create()
      Create a Processor instance that simply broadcasts submitted values to its subscribers. Broadcasts will occur on the common ForkJoinPool.
      Type Parameters:
      V - The type
      Returns:
      A new processor instance
    • createTransactional

      Create a processor instance that is aware of transactions
      Type Parameters:
      V - The value type
      Returns:
      a new transactional processor
    • create

      static <V> Processor.Iso<V> create​(Executor executor)
      Create a Processor instance that simply broadcasts submitted values to its subscribers
      Type Parameters:
      V - The type
      Parameters:
      executor - task executor
      Returns:
      A new processor instance
    • createTransactional

    • map

      default <R> Processor<O,​R> map​(CheckedFunction<? super O,​? extends R,​TransactionFailedException> mapper)
      Specified by:
      map in interface Publisher<I>
    • inject

      void inject​(O element)
      Submit an element of the observed type, bypassing any mapping this Processor may do. If the input type of this processor equals the output type, this is equivalent to Subscriber.submit(Object)
      Parameters:
      element - The element to submit
    • setFallbackHandler

      void setFallbackHandler​(@Nullable Subscriber<O> subscriber)
      Provide a Subscriber that will handle events submitted to this processor, but only if no other subscription is active.
      Parameters:
      subscriber - The fallback subscriber to add. Provide null to remove the handler
    • closeIfUnsubscribed

      Close this processor if there are no remaining subscriptions. Any signals that have already been submitted will be processed.

      Any call to this method after the Processor has been closed will simply return true.

      Returns:
      true if there are no subscribers and this processor is closed