| 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectgroovyx.gpars.dataflow.impl.SelectBase<T>
public final class SelectBase<T>
The implementation of the core for all selects.
| Field Summary | |
|---|---|
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  java.util.List<DataFlowReadChannel<? extends T>> | 
channels
 | 
private  int | 
numberOfChannels
 | 
private  java.util.Collection<SelectRequest<T>> | 
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(groovyx.gpars.group.PGroup pGroup,
           java.util.List<DataFlowReadChannel<? extends T>> channels)
Stores the input channel and registers for the wheneverBound() event on each  | 
|
| Method Summary | |
|---|---|
(package private)  void | 
boundNotification(int index,
                  DataFlowReadChannel<? extends T> 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<? extends T> channel)
Sets the flag in the disabledDFVs array, if the channel is a DFV  | 
 void | 
doSelect(int startIndex,
         SelectRequest<T> selectRequest)
Invoked whenever the Select is asked for the next value.  | 
| Methods inherited from class java.lang.Object | 
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
private final java.util.List<DataFlowReadChannel<? extends T>> channels
private final int numberOfChannels
private final boolean[] disabledDFVs
private final java.util.Collection<SelectRequest<T>> pendingRequests
private final java.util.Random position
| Constructor Detail | 
|---|
public SelectBase(groovyx.gpars.group.PGroup pGroup,
                  java.util.List<DataFlowReadChannel<? extends T>> 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 | 
|---|
void boundNotification(int index,
                       DataFlowReadChannel<? extends T> channel)
                 throws java.lang.InterruptedException
index - The index of the ready channelchannel - The channel itself
java.lang.InterruptedException - If the thread is interrupted during value retrieval from the channel
public void doSelect(int startIndex,
                     SelectRequest<T> selectRequest)
              throws java.lang.InterruptedException
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
java.lang.InterruptedException - If the thread gets interrupted while reading messages from the channels
private void disableDFV(int currentPosition,
                        DataFlowReadChannel<? extends T> channel)
currentPosition - The position to markchannel - The channel being considered
  | 
Copyright © 2008–2010 Václav Pech. All Rights Reserved. | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||