orc.runtime.values
Class GroupCell

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

public final class GroupCell
extends Group
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

Field Summary
 
Fields inherited from class orc.runtime.Group
alive
 
Constructor Summary
GroupCell(Group parent, TokenTracer.PullTrace pullTrace)
           
 
Method Summary
 void close()
          If a GroupRegion is closed, it closes the associated cell, even if that cell has not yet been bound.
 java.lang.Object forceArg(Token t)
           
 Callable forceCall(Token t)
           
 boolean isBound()
           
 void onKill()
          Override this.
 java.lang.Object peekValue()
           
 void setValue(Token token)
          This call defines the fundamental behavior of groups: When the value is bound, all subgroups are killed and all waiting tokens are activated.
 java.lang.String toString()
           
 void waitForValue(Token t)
          Add a token to the waiting queue of this group
 
Methods inherited from class orc.runtime.Group
add, isAlive, kill, remove
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

GroupCell

public GroupCell(Group parent,
                 TokenTracer.PullTrace pullTrace)
Parameters:
pullTrace - used to identify the group cell in traces (see TokenTracer.pull()).
Method Detail

setValue

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

Parameters:
token - the token with the result value for the group

close

public void close()
If a GroupRegion is closed, it closes the associated cell, even if that cell has not yet been bound. This is necessary to ensure any tokens waiting on the cell are killed.


onKill

public void onKill()
Description copied from class: Group
Override this.

Overrides:
onKill in class Group

waitForValue

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

Parameters:
t -

forceArg

public java.lang.Object forceArg(Token t)
Specified by:
forceArg in interface Future

forceCall

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

peekValue

public java.lang.Object peekValue()

isBound

public boolean isBound()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object