C# Class clojure.lang.Agent

Represents an Agent.

See the Clojure documentation for more information.

The Java implementation plays many more games with thread pools. The CLR does not provide such support. We need to revisit this in CLR 4. Until then: TODO: Implement our own thread pooling?

Inheritance: ARef
Show file Open project: arohner/clojure-contrib Class Usage Examples

Public Methods

Method Description
AddError ( Exception e ) : void

Add an error.

Agent ( Object state, IPersistentMap meta ) : System

Construct an agent with given state and metadata.

Agent ( object state ) : System

Construct an agent with given state and null metadata.

clearErrors ( ) : void

Clear the agent's errors.

Lowercase-name and for core.clj compatibility.

deref ( ) : object

Gets the (immutable) value the reference is holding.

dispatch ( IFn fn, ISeq args, System.Boolean solo ) : object

Send a message to the agent.

getErrors ( ) : ISeq

Get the agent's errors.

Lowercase-name (and is a method instead of a property) for core.clj compatibility.

releasePendingSends ( ) : int

Enqueue nested actions.

lowercase for core.clj compatibility

shutdown ( ) : void

Shutdown all threads executing.

We need to work on this.

Private Methods

Method Description
DispatchAction ( System.Action action ) : void

Send an action (encapsulated message).

If there is a transaction running on this thread, defer execution until the transaction ends (enqueue the action on the transaction).

If there is already an action running, enqueue it (nested).

Otherwise, queue it for execution.

Enqueue ( System.Action action ) : void

Enqueue an action in the pending queue.

Spin-locks to update the queue.

SetState ( object newState ) : bool

Set the state.

Method Details

AddError() public method

Add an error.
public AddError ( Exception e ) : void
e System.Exception The exception to add.
return void

Agent() public method

Construct an agent with given state and metadata.
public Agent ( Object state, IPersistentMap meta ) : System
state Object The initial state.
meta IPersistentMap The metadata to attach.
return System

Agent() public method

Construct an agent with given state and null metadata.
public Agent ( object state ) : System
state object The initial state.
return System

clearErrors() public method

Clear the agent's errors.
Lowercase-name and for core.clj compatibility.
public clearErrors ( ) : void
return void

deref() public method

Gets the (immutable) value the reference is holding.
public deref ( ) : object
return object

dispatch() public method

Send a message to the agent.
public dispatch ( IFn fn, ISeq args, System.Boolean solo ) : object
fn IFn The function to be called on the current state and the supplied arguments.
args ISeq The extra arguments to the function.
solo System.Boolean true means execute on its own thread (send-off); /// false means use a thread pool thread (send).
return object

getErrors() public method

Get the agent's errors.
Lowercase-name (and is a method instead of a property) for core.clj compatibility.
public getErrors ( ) : ISeq
return ISeq

releasePendingSends() public static method

Enqueue nested actions.
lowercase for core.clj compatibility
public static releasePendingSends ( ) : int
return int

shutdown() public static method

Shutdown all threads executing.
We need to work on this.
public static shutdown ( ) : void
return void