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.

Since:
4.0.0
  • 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
      Since:
      4.0.0
    • 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
      Since:
      4.0.0
    • createTransactional

      Create a processor instance that is aware of transactions.
      Type Parameters:
      V - the value type
      Returns:
      a new transactional processor
      Since:
      4.0.0
    • createTransactional

      Create a processor instance that is aware of transactions.

      Operations will be submitted to the provided executor.

      Type Parameters:
      V - the value type
      Parameters:
      exec - executor to run operations on
      Returns:
      a new transactional processor
      Since:
      4.0.0
    • map

      default <R> Processor<O,R> map(CheckedFunction<? super O,? extends R,TransactionFailedException> mapper)
      Create a new publisher that will transform events published.
      Specified by:
      map in interface Publisher<I>
      Type Parameters:
      R - output value type
      Parameters:
      mapper - transformer function
      Returns:
      a new publisher
    • 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
      Since:
      4.0.0
    • fallbackHandler

      void fallbackHandler(@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
      Since:
      4.0.0
    • 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
      Since:
      4.0.0