A Select allows the user to select a value from multiple channels, which have a value available for read at the moment. It can either pick a channel randomly, when using the plain select method, or with precedence towards channels with lower position indexes, when the prioritySelect method is used. If a value is not available immediately in any of the channels, Select will wait for the first value to arrive in any of the channels.
Both 'select' and 'prioritySelect' methods come in two flavours - blocking, which wait till a value is available in a channel, and messaging, which send out a message to the specified message handler, as soon as a message is available. Optionally, all methods allow the user to specify a boolean mask, assigning each select 's input channel a flag indicating, whether it should be included in the select operation. This is useful when handling state to selectively block some inputs in some states.
Modifiers | Name | Description |
---|---|---|
static java.lang.String |
TIMEOUT |
A value that gets bound to timeout channels through the Select.createTimeout() method |
private SelectBase<T> |
selectBase |
Constructor and description |
---|
Select
(PGroup pGroup, SelectableChannel<? extends T>... channels) @param pGroup The group, the thread pool of which should be used for notification message handlers |
Select
(PGroup pGroup, java.util.List<SelectableChannel<? extends T>> channels) @param pGroup The group, the thread pool of which should be used for notification message handlers |
Type | Name and description |
---|---|
SelectResult<T> |
call() Selects a value from a single randomly chosen input channel, which has a value available for read. |
SelectResult<T> |
call(java.util.List<java.lang.Boolean> mask) Selects a value from a single randomly chosen input channel, which has a value available for read. |
void |
call(MessageStream messageStream) Selects a value from a single randomly chosen input channel, which has a value available for read. |
void |
call(MessageStream messageStream, java.util.List<java.lang.Boolean> mask) Selects a value from a single randomly chosen input channel, which has a value available for read. |
static DataflowReadChannel<java.lang.String> |
createTimeout(long timeout) Creates a timeout channel (DataflowVariable) that will bind a Select.TIMEOUT value after the specified timeout. |
SelectResult<T> |
prioritySelect() Selects a value from a single input channel, which has a value available for read. |
SelectResult<T> |
prioritySelect(java.util.List<java.lang.Boolean> mask) Selects a value from a single input channel, which has a value available for read. |
void |
prioritySelect(MessageStream messageStream) Selects a value from a single input channel, which has a value available for read. |
void |
prioritySelect(MessageStream messageStream, java.util.List<java.lang.Boolean> mask) Selects a value from a single input channel, which has a value available for read. |
Promise<SelectResult<T>> |
prioritySelectToPromise() Selects asynchronously a value from a single input channel, which has a value available for read. |
Promise<SelectResult<T>> |
prioritySelectToPromise(java.util.List<java.lang.Boolean> mask) Selects asynchronously a value from a single input channel, which has a value available for read. |
SelectResult<T> |
select() Selects a value from a single randomly chosen input channel, which has a value available for read. |
SelectResult<T> |
select(java.util.List<java.lang.Boolean> mask) Selects a value from a single randomly chosen input channel, which has a value available for read. |
void |
select(MessageStream messageStream) Selects a value from a single randomly chosen input channel, which has a value available for read. |
void |
select(MessageStream messageStream, java.util.List<java.lang.Boolean> mask) Selects a value from a single randomly chosen input channel, which has a value available for read. |
private void |
select(MessageStream messageStream, int startIndex, java.util.List<java.lang.Boolean> mask) Invokes the internal select base with a SelectRequest instance ensuring a message is sent, once a value has been selected |
private SelectResult<T> |
select(int startIndex, java.util.List<java.lang.Boolean> mask) Invokes the internal select base with a SelectRequest instance ensuring the current thread can continue returning the correct value, once a value has been selected |
Promise<SelectResult<T>> |
selectToPromise() Selects asynchronously a value from a single randomly chosen input channel, which has a value available for read. |
Promise<SelectResult<T>> |
selectToPromise(java.util.List<java.lang.Boolean> mask) /** Selects asynchronously a value from a single randomly chosen input channel, which has a value available for read. |
private Promise<SelectResult<T>> |
selectToPromise(int startIndex, java.util.List<java.lang.Boolean> mask) Invokes the internal select base with a SelectRequest instance ensuring a message is sent, once a value has been selected |
Methods inherited from class | Name |
---|---|
class java.lang.Object |
java.lang.Object#wait(), java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
A value that gets bound to timeout channels through the Select.createTimeout() method
pGroup
- The group, the thread pool of which should be used for notification message handlerschannels
- The input channels to select from
pGroup
- The group, the thread pool of which should be used for notification message handlerschannels
- The list of input channels to select fromSelects a value from a single randomly chosen input channel, which has a value available for read.
Selects a value from a single randomly chosen input channel, which has a value available for read. Only the channels marked with 'true' in the supplied mask will be considered.
mask
- A list of boolean values indicating, whether the input channel with the same position index should be included in the selection or notSelects a value from a single randomly chosen input channel, which has a value available for read. The read value is send to the supplied messageStream
messageStream
- A message stream accepting the selected value. The message will be of SelectResult type, holding the actual value as well as the channel index.Selects a value from a single randomly chosen input channel, which has a value available for read. The read value is send to the supplied messageStream
messageStream
- A message stream accepting the selected value. The message will be of SelectResult type, holding the actual value as well as the channel index.mask
- A list of boolean values indicating, whether the input channel with the same position index should be included in the selection or notCreates a timeout channel (DataflowVariable) that will bind a Select.TIMEOUT value after the specified timeout.
timeout
- The delay in milliseconds to wait before the value gets boundSelects a value from a single input channel, which has a value available for read. Channels with lower position index are preferred.
Selects a value from a single input channel, which has a value available for read. Channels with lower position index are preferred. Only the channels marked with 'true' in the supplied mask will be considered.
mask
- A list of boolean values indicating, whether the input channel with the same position index should be included in the selection or notSelects a value from a single input channel, which has a value available for read. Channels with lower position index are preferred. The read value is send to the supplied messageStream
messageStream
- A message stream accepting the selected value. The message will be of SelectResult type, holding the actual value as well as the channel index.Selects a value from a single input channel, which has a value available for read. Channels with lower position index are preferred. The read value is send to the supplied messageStream
messageStream
- A message stream accepting the selected value. The message will be of SelectResult type, holding the actual value as well as the channel index.mask
- A list of boolean values indicating, whether the input channel with the same position index should be included in the selection or notSelects asynchronously a value from a single input channel, which has a value available for read. Channels with lower position index are preferred. The returned Promise will eventually get bound to the selected value (wrapped inside s SelectResult instance)
Selects asynchronously a value from a single input channel, which has a value available for read. Channels with lower position index are preferred. The returned Promise will eventually get bound to the selected value (wrapped inside s SelectResult instance)
mask
- A list of boolean values indicating, whether the input channel with the same position index should be included in the selection or notSelects a value from a single randomly chosen input channel, which has a value available for read.
Selects a value from a single randomly chosen input channel, which has a value available for read. Only the channels marked with 'true' in the supplied mask will be considered.
mask
- A list of boolean values indicating, whether the input channel with the same position index should be included in the selection or notSelects a value from a single randomly chosen input channel, which has a value available for read. The read value is send to the supplied messageStream
messageStream
- A message stream accepting the selected value. The message will be of SelectResult type, holding the actual value as well as the channel index.Selects a value from a single randomly chosen input channel, which has a value available for read. The read value is send to the supplied messageStream
messageStream
- A message stream accepting the selected value. The message will be of SelectResult type, holding the actual value as well as the channel index.mask
- A list of boolean values indicating, whether the input channel with the same position index should be included in the selection or notInvokes the internal select base with a SelectRequest instance ensuring a message is sent, once a value has been selected
Invokes the internal select base with a SelectRequest instance ensuring the current thread can continue returning the correct value, once a value has been selected
Selects asynchronously a value from a single randomly chosen input channel, which has a value available for read. The returned Promise will eventually get bound to the selected value (wrapped inside s SelectResult instance)
/** Selects asynchronously a value from a single randomly chosen input channel, which has a value available for read. The returned Promise will eventually get bound to the selected value (wrapped inside s SelectResult instance)
mask
- A list of boolean values indicating, whether the input channel with the same position index should be included in the selection or notInvokes the internal select base with a SelectRequest instance ensuring a message is sent, once a value has been selected
Copyright © 2008–2014 Václav Pech. All Rights Reserved.