|
org.codehaus.gpars | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object groovyx.gpars.dataflow.impl.SelectBase
@SuppressWarnings({"rawtypes", "RawUseOfParameterizedType"}) public final class SelectBase
The implementation of the core for all selects.
Field Summary | |
---|---|
private java.util.List |
channels
|
private boolean[] |
disabledDFVs
Since DataflowVariables should be only read once, they need to be disabled after selecting their value The array stores a boolean flag for each index, indicating, whether the channel/variable has been disabled |
private int |
numberOfChannels
|
private java.util.Collection |
pendingRequests
Unsatisfied requests for value, each holding a list of guards and a routine to invoke once a value is available |
private java.util.Random |
position
|
Constructor Summary | |
SelectBase(PGroup pGroup, java.util.List channels)
Stores the input channel and registers for the wheneverBound() event on each |
Method Summary | |
---|---|
void
|
boundNotification(int index, DataflowReadChannel channel)
Invoked by the SelectCallback instances, potentially concurrently to inform about new values being available for read from channels. |
private void
|
disableDFV(int currentPosition, DataflowReadChannel channel)
Sets the flag in the disabledDFVs array, if the channel is a DFV |
void
|
doSelect(int startIndex, SelectRequest selectRequest)
Invoked whenever the Select is asked for the next value. |
Methods inherited from class java.lang.Object | |
---|---|
java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#wait(long, int), 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 |
---|
private final java.util.List channels
private final boolean[] disabledDFVs
private final int numberOfChannels
private final java.util.Collection pendingRequests
@SuppressWarnings({"UnsecureRandomNumberGeneration"}) private final java.util.Random position
Constructor Detail |
---|
public SelectBase(PGroup pGroup, java.util.List channels)
pGroup
- The group, the thread pool of which should be used for notification message handlerschannels
- All the input channels to select on
Method Detail |
---|
@SuppressWarnings({"MethodOnlyUsedFromInnerClass"}) void boundNotification(int index, DataflowReadChannel channel)
index
- The index of the ready channelchannel
- The channel itself
private void disableDFV(int currentPosition, DataflowReadChannel channel)
currentPosition
- The position to markchannel
- The channel being considered
public void doSelect(int startIndex, SelectRequest selectRequest)
startIndex
- The index of the channel to check first for available messages, -1 if start at a random position. Continue scanning by increasing the index, once the size is reached start from 0.selectRequest
- The request that holds the guards and expects a notification once a value is selected
Copyright © 2008–2012 Václav Pech. All Rights Reserved.