Package io.servicetalk.concurrent.api
Interface BlockingProcessorSignalsHolder<T>
- Type Parameters:
T- Type of items stored in this holder.
public interface BlockingProcessorSignalsHolder<T>
A holder of items for a
BlockingIterable.Processor.
Multi-threaded access
Implementations may assume that the consumption of the items (methodsconsume(ProcessorSignalsConsumer)
and consume(ProcessorSignalsConsumer, long, TimeUnit)) is always done serially however the production
(methods add(Object), terminate(Throwable) and terminate()) may be done concurrently.-
Method Summary
Modifier and TypeMethodDescriptionvoidAdds an item to this holder.booleanconsume(ProcessorSignalsConsumer<T> consumer) Consumes the next item stored in this holder.booleanconsume(ProcessorSignalsConsumer<T> consumer, long waitFor, TimeUnit waitForUnit) Consumes the next item stored in this holder.voidTerminates this holder, such that no further modifications of this holder are expected.voidTerminates this holder, such that no further modifications of this holder are expected.
-
Method Details
-
add
Adds an item to this holder.- Parameters:
item- to add.- Throws:
InterruptedException- If the add was interrupted.
-
terminate
Terminates this holder, such that no further modifications of this holder are expected. Subsequentconsumptionsmust first consume all previouslyaddeditems and thenProcessorSignalsConsumer.consumeTerminal()consume termination}.- Throws:
InterruptedException- If termination was interrupted.
-
terminate
Terminates this holder, such that no further modifications of this holder are expected. Subsequentconsumptionsmust first consume all previouslyaddeditems and thenProcessorSignalsConsumer.consumeTerminal()consume termination}.- Parameters:
cause-Throwableas a cause for termination.- Throws:
InterruptedException- If termination was interrupted.
-
consume
Consumes the next item stored in this holder. If there are no items stored in the holder and the holder has terminatedsuccessfullyor with anerrorthen consume thatsuccessfulorfailedtermination.This method will block till an item or a terminal event is available in the holder.
- Parameters:
consumer-ProcessorSignalsConsumerto consume the next item or termination in this holder- Returns:
trueif any method was called on the passedProcessorSignalsConsumer.- Throws:
InterruptedException- If the thread was interrupted while waiting for an item or terminal event.
-
consume
boolean consume(ProcessorSignalsConsumer<T> consumer, long waitFor, TimeUnit waitForUnit) throws TimeoutException, InterruptedException Consumes the next item stored in this holder. If there are no items stored in the holder and the holder has terminatedsuccessfullyor with anerrorthen consume thatsuccessfulorfailedtermination.This method will block till an item or a terminal event is available in the holder or the passed
waitForduration has elapsed.- Parameters:
consumer-ProcessorSignalsConsumerto consume the next item or termination in this holderwaitFor- Duration to wait for an item or termination to be available.waitForUnit-TimeUnitforwaitFor.- Returns:
trueif any method was called on the passedProcessorSignalsConsumer.- Throws:
TimeoutException- If there was no item or termination available in the holder for the passedwaitFordurationInterruptedException- If the thread was interrupted while waiting for an item or terminal event.
-