| 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectgroovyx.gpars.agent.AgentCore
groovyx.gpars.agent.AgentBase<T>
abstract class AgentBase<T>
Implements most of Agent's public method in Java
| Nested Class Summary | |
|---|---|
private static class | 
AgentBase.AwaitClosure
Returns the current value of the Agent's state  | 
| Field Summary | |
|---|---|
private static groovy.lang.Closure | 
awaitClosure
 | 
private  groovy.lang.Closure | 
copy
Function converting the internal state during read to prevent internal state escape from the protected boundary of the agent  | 
protected  T | 
data
Holds the internal mutable state  | 
private  java.util.Collection<groovy.lang.Closure> | 
listeners
Holds all listeners interested in state updates A listener should be a closure accepting the old and the new value in this order.  | 
protected  java.util.concurrent.locks.ReadWriteLock | 
lock
Allows reads not to wait in the message queue.  | 
private  java.util.Collection<groovy.lang.Closure> | 
validators
Holds all validators checking the agent's state A validator should be a closure accepting the old and the new value in this order.  | 
| Constructor Summary | |
|---|---|
AgentBase(T data)
 | 
|
AgentBase(T data,
          groovy.lang.Closure copy)
Creates a new Agent around the supplied modifiable object  | 
|
| Method Summary | |
|---|---|
 void | 
addListener(groovy.lang.Closure listener)
Adds a listener interested in state updates A listener should be a closure accepting the old and the new value in this order plus optionally the agent reference as the first argument.  | 
 void | 
addValidator(groovy.lang.Closure validator)
Adds a validator checking the agent's state A listener should be a closure accepting the old and the new value in this order plus optionally the agent reference as the first argument.  | 
 void | 
await()
Blocks until all messages in the queue prior to call to await() complete.  | 
 T | 
getInstantVal()
A shorthand method for safe message-based retrieval of the internal state.  | 
 T | 
getVal()
A shorthand method for safe message-based retrieval of the internal state.  | 
private  groovy.lang.Closure | 
checkClosure(groovy.lang.Closure code)
Only two-argument closures are allowed  | 
(package private)  void | 
onMessage(groovy.lang.Closure code)
Accepts and invokes the closure  | 
(package private)  void | 
onMessage(org.codehaus.groovy.runtime.NullObject obj)
Accepts a NullObject instance and sets the internal state to null  | 
(package private)  void | 
onMessage(T message)
Other messages than closures are accepted as new values for the internal state  | 
(package private)  T | 
sendAndWait(groovy.lang.Closure message)
Submits the closure waiting for the result  | 
 void | 
updateValue(T newValue)
Allows closures to set the new internal state as a whole Do not call this method directly from the outside.  | 
 void | 
valAsync(groovy.lang.Closure callback)
A shorthand method for safe asynchronous message-based retrieval of the internal state.  | 
| Methods inherited from class groovyx.gpars.agent.AgentCore | 
|---|
attachToThreadPool, call, getErrors, handleMessage, hasErrors, isFair, leftShift, makeFair, registerError, send, setPGroup | 
| Methods inherited from class java.lang.Object | 
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
protected java.util.concurrent.locks.ReadWriteLock lock
protected T data
private final groovy.lang.Closure copy
private final java.util.Collection<groovy.lang.Closure> listeners
private final java.util.Collection<groovy.lang.Closure> validators
private static final groovy.lang.Closure awaitClosure
| Constructor Detail | 
|---|
AgentBase(T data)
AgentBase(T data,
          groovy.lang.Closure copy)
data - The object to use for storing the internal state of the variablecopy - A closure to use to create a copy of the internal state when sending the internal state out| Method Detail | 
|---|
final void onMessage(org.codehaus.groovy.runtime.NullObject obj)
obj - The received messagefinal void onMessage(groovy.lang.Closure code)
code - The received messagefinal void onMessage(T message)
message - The received messagepublic final void updateValue(T newValue)
newValue - The value to set the internal state topublic final T getInstantVal()
public final T getVal()
               throws java.lang.InterruptedException
java.lang.InterruptedException - If the thread gets interrupted while waiting for a value to be boundpublic final void valAsync(groovy.lang.Closure callback)
callback - A closure to invoke with the internal state as a parameter
final T sendAndWait(groovy.lang.Closure message)
             throws java.lang.InterruptedException
message - The message/closure to send
java.lang.InterruptedException - If the thread gets interrupted while waiting for a value to be bound
public final void await()
                 throws java.lang.InterruptedException
java.lang.InterruptedException - If the thread gets interrupted while waiting for a value to be boundpublic void addListener(groovy.lang.Closure listener)
listener - The closure with two or three argumentspublic void addValidator(groovy.lang.Closure validator)
validator - The closure with two or three argumentsprivate groovy.lang.Closure checkClosure(groovy.lang.Closure code)
code - The passed-in closure
  | 
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 | |||||||||