orc.runtime.values
Class GroupCell

java.lang.Object
  extended by orc.runtime.values.GroupCell
All Implemented Interfaces:
java.io.Serializable, Future

public class GroupCell
extends java.lang.Object
implements java.io.Serializable, Future

A value container that is also a group. Groups are essential to the evaluation of where clauses: all the tokens that arise from execution of a where definition are associated with the same group. Once a value is produced for the group, all these tokens are terminated.

Author:
wcook, dkitchin
See Also:
Serialized Form

Constructor Summary
GroupCell()
           
 
Method Summary
 void close()
           
 GroupCell createCell()
          Groups are organized into a tree.
 Value forceArg(Token t)
           
 Callable forceCall(Token t)
           
 boolean isAlive()
          Check if a group has been killed
 void setRegion(GroupRegion region)
           
 void setValue(Value value)
          This call defines the fundamental behavior of groups: When the value is bound, all subgroups are killed and all waiting tokens are activated.
 void waitForValue(Token t)
          Add a token to the waiting queue of this group
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GroupCell

public GroupCell()
Method Detail

createCell

public GroupCell createCell()
Groups are organized into a tree. In this case a new subgroup is created and returned. When we add a new child cell, we can also remove any dead children so that their memory can be recycled.

Returns:
the new group

setValue

public void setValue(Value value)
This call defines the fundamental behavior of groups: When the value is bound, all subgroups are killed and all waiting tokens are activated.

Parameters:
value - the value for the group

isAlive

public boolean isAlive()
Check if a group has been killed

Returns:
true if the group has not been killed

waitForValue

public void waitForValue(Token t)
Add a token to the waiting queue of this group

Parameters:
t -

forceArg

public Value forceArg(Token t)
Specified by:
forceArg in interface Future

forceCall

public Callable forceCall(Token t)
Specified by:
forceCall in interface Future

close

public void close()

setRegion

public void setRegion(GroupRegion region)