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 Detail

      • 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​(java.util.concurrent.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

        static <V> Processor.TransactionalIso<V> 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

        static <V> Processor.TransactionalIso<V> createTransactional​(java.util.concurrent.Executor exec)
        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
      • 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

        boolean 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