Interface BlockingProcessorSignalsHolder<T>

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void add​(T item)
      Adds an item to this holder.
      boolean consume​(ProcessorSignalsConsumer<T> consumer)
      Consumes the next item stored in this holder.
      boolean consume​(ProcessorSignalsConsumer<T> consumer, long waitFor, java.util.concurrent.TimeUnit waitForUnit)
      Consumes the next item stored in this holder.
      void terminate()
      Terminates this holder, such that no further modifications of this holder are expected.
      void terminate​(java.lang.Throwable cause)
      Terminates this holder, such that no further modifications of this holder are expected.
    • Method Detail

      • add

        void add​(@Nullable
                 T item)
          throws java.lang.InterruptedException
        Adds an item to this holder.
        Parameters:
        item - to add.
        Throws:
        java.lang.InterruptedException - If the add was interrupted.
      • terminate

        void terminate()
                throws java.lang.InterruptedException
        Terminates this holder, such that no further modifications of this holder are expected. Subsequent consumptions must first consume all previously added items and then ProcessorSignalsConsumer.consumeTerminal() consume termination}.
        Throws:
        java.lang.InterruptedException - If termination was interrupted.
      • terminate

        void terminate​(java.lang.Throwable cause)
                throws java.lang.InterruptedException
        Terminates this holder, such that no further modifications of this holder are expected. Subsequent consumptions must first consume all previously added items and then ProcessorSignalsConsumer.consumeTerminal() consume termination}.
        Parameters:
        cause - Throwable as a cause for termination.
        Throws:
        java.lang.InterruptedException - If termination was interrupted.
      • consume

        boolean consume​(ProcessorSignalsConsumer<T> consumer)
                 throws java.lang.InterruptedException
        Consumes the next item stored in this holder. If there are no items stored in the holder and the holder has terminated successfully or with an error then consume that successful or failed termination.

        This method will block till an item or a terminal event is available in the holder.

        Parameters:
        consumer - ProcessorSignalsConsumer to consume the next item or termination in this holder
        Returns:
        true if any method was called on the passed ProcessorSignalsConsumer.
        Throws:
        java.lang.InterruptedException - If the thread was interrupted while waiting for an item or terminal event.
      • consume

        boolean consume​(ProcessorSignalsConsumer<T> consumer,
                        long waitFor,
                        java.util.concurrent.TimeUnit waitForUnit)
                 throws java.util.concurrent.TimeoutException,
                        java.lang.InterruptedException
        Consumes the next item stored in this holder. If there are no items stored in the holder and the holder has terminated successfully or with an error then consume that successful or failed termination.

        This method will block till an item or a terminal event is available in the holder or the passed waitFor duration has elapsed.

        Parameters:
        consumer - ProcessorSignalsConsumer to consume the next item or termination in this holder
        waitFor - Duration to wait for an item or termination to be available.
        waitForUnit - TimeUnit for waitFor.
        Returns:
        true if any method was called on the passed ProcessorSignalsConsumer.
        Throws:
        java.util.concurrent.TimeoutException - If there was no item or termination available in the holder for the passed waitFor duration
        java.lang.InterruptedException - If the thread was interrupted while waiting for an item or terminal event.