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 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
      • 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
      • 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

        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