|
org.codehaus.gpars | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object groovyx.gpars.dataflow.Select
@java.lang.SuppressWarnings({"OverloadedVarargsMethod"}) public class Select
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.
Field Summary | |
---|---|
static java.lang.String |
TIMEOUT
@param pGroup The group, the thread pool of which should be used for notification message handlers |
private SelectBase |
selectBase
|
Constructor Summary | |
Select(PGroup pGroup, SelectableChannel... channels)
|
|
Select(PGroup pGroup, java.util.List channels)
|
Method Summary | |
---|---|
SelectResult
|
call()
|
SelectResult
|
call(java.util.List mask)
Selects a value from a single randomly chosen input channel, which has a value available for read. |
void
|
call(MessageStream messageStream)
|
void
|
call(MessageStream messageStream, java.util.List mask)
Invokes the internal select base with a SelectRequest instance ensuring a message is sent, once a value has been selected |
static DataflowReadChannel
|
createTimeout(long timeout)
|
SelectResult
|
prioritySelect()
|
SelectResult
|
prioritySelect(java.util.List mask)
Selects a value from a single input channel, which has a value available for read. |
void
|
prioritySelect(MessageStream messageStream)
|
void
|
prioritySelect(MessageStream messageStream, java.util.List mask)
Selects asynchronously a value from a single input channel, which has a value available for read. |
Promise
|
prioritySelectToPromise()
|
Promise
|
prioritySelectToPromise(java.util.List mask)
|
SelectResult
|
select()
Selects a value from a single randomly chosen input channel, which has a value available for read. |
SelectResult
|
select(java.util.List mask)
Creates a timeout channel (DataflowVariable) that will bind a Select.TIMEOUT value after the specified timeout. |
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 mask)
Selects asynchronously 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 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 |
private SelectResult
|
select(int startIndex, java.util.List mask)
|
Promise
|
selectToPromise()
|
Promise
|
selectToPromise(java.util.List mask)
Selects a value from a single input channel, which has a value available for read. |
private Promise
|
selectToPromise(int startIndex, java.util.List 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 java.lang.Object | |
---|---|
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), 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() |
Field Detail |
---|
public static final java.lang.String TIMEOUT
pGroup
- The group, the thread pool of which should be used for notification message handlerschannels
- The list of input channels to select from
private final SelectBase selectBase
Constructor Detail |
---|
@java.lang.SuppressWarnings* Selects a value from a single randomly chosen input channel, which has a value available for read. public Select(PGroup pGroup, SelectableChannel... channels)
public Select(PGroup pGroup, java.util.List channels)
Method Detail |
---|
public final SelectResult call()
public final SelectResult call(java.util.List mask)
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.
public final void call(MessageStream messageStream)
public final void call(MessageStream messageStream, java.util.List mask)
public static DataflowReadChannel createTimeout(long timeout)
public SelectResult prioritySelect()
public SelectResult prioritySelect(java.util.List mask)
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.
public void prioritySelect(MessageStream messageStream)
public void prioritySelect(MessageStream messageStream, java.util.List mask)
public Promise prioritySelectToPromise()
public Promise prioritySelectToPromise(java.util.List mask)
public SelectResult select()
mask
- A list of boolean values indicating, whether the input channel with the same position index should be included in the selection or not
public SelectResult select(java.util.List mask)
timeout
- The delay in milliseconds to wait before the value gets bound
public void select(MessageStream 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 not
public void select(MessageStream messageStream, java.util.List mask)
private void select(MessageStream messageStream, int startIndex, java.util.List mask)
private SelectResult select(int startIndex, java.util.List mask)
public Promise selectToPromise()
public Promise selectToPromise(java.util.List mask)
private Promise selectToPromise(int startIndex, java.util.List mask)
Copyright © 2008–2013 Václav Pech. All Rights Reserved.