Erlangen API Documentation

erlangen (Package)

Distributed, asychronous message passing system for Clozure Common Lisp.

*agent-debug* (Variable)

Initial Value:

NIL

Description:

If *agent-debug* is true when calling spawn, conditions of type serious-condition will not be automatically handled for the spawned agent. The debugger will be entered so that the call stack can be inspected. Invoking the exit restart will resume normal operation except that the exit reason will be the agent instead of the fatal condition.

*default-mailbox-size* (Variable)

Initial Value:

64

Description:

*default-mailbox-size* is the default value of the :mailbox-size parameter to spawn.

agent (Function)

Syntax:

— Function: agent <no arguments>

Description:

agent returns the calling agent.

agent (Type)

Syntax:

agent::= structure | keyword | string

Description:

An agent can either be an agent structure, a keyword denoting a registered agent or a string denoting a remote agent.

A remote agent is denoted by a string of the form "host/node/agent" where host is the host name, node is the node name and agent is the agent identifier of the remote agent.

An agent identifier is either a hexadecimal digit string denoting an anonymous agent or a colon followed by a symbol name denoting a registered agent. In the latter case, the symbol name may not contain the slash (/) character.

Notes:

Only agent structures are of type agent.

call (Type)

Syntax:

call::= (function argument*)

Arguments and Values:

function—a symbol denoting a function.

argument—a serializable object.

Description:

A call denotes a portable function call to be invoked on a given node. A call is a list whose first element is a symbol denoting a function and whose remaining elements are arguments to be applied to the denoted function.

exit (Function)

Syntax:

— Function: exit &optional reason agent

Arguments and Values:

reason—an object.

agent—an agent. The default is the calling agent.

Description:

exit kills agent with reason as the exit reason. Subsequent attempts to send messages to agent will fail. If agent is the calling agent it exits immediately, otherwise exit delivers an exit message to agent.

Exceptional Situations:

If agent is a keyword that is not registered as a name an error of type simple-error is signaled.

link (Function)

Syntax:

— Function: link agent &optional mode

Arguments and Values:

agent—an agent.

mode—either :link or :monitor. The default is :link.

Description:

link links the calling agent to agent. After two agents are linked they behave as follows:

When the calling agent exits it will attempt to kill agent with the exit reason of the calling agent.

When agent exits, and mode is :link it will attempt to kill the calling agent with the exit reason of agent.

When agent exits, and mode is :monitor it will attempt to send an exit notification to the calling agent.

An exit notification is of the form

( agent status . values )

status::= :ok | :exit

The status :ok indicates that the agent exited normally, and values will be a list of its return values.

The status :exit indicates that the agent was either killed by exit or aborted because of an unhandled condition of type serious-condition, and values will be the exit reason supplied to exit, or the condition object.

Exceptional Situations:

If agent is the calling agent an error of type simple-error is signaled.

If agent is a keyword that is not registered as a name an error of type simple-error is signaled.

node (Function)

Syntax:

— Function: node &key host name

Arguments and Values:

host—a host as accepted by resolve-address. The default is the local host name as reported by machine-instance.

name—a string. The default is a unique name.

Description:

node spawns the node protocol server to listen on a random free port of host. It then registers its name and listening port with the port mapper. Once the node is registered, it is capable of communicating with remote nodes.

Examples:

;; Start talking to remote nodes:
(spawn 'node)

Side Effects:

node changes the host name of the local node to host, which is subsequently used as a default argument to spawn.

Exceptional Situations:

If name can not be registered (e.g., because it has already been registered by another node, or because the port mapper is unreachable) an error of type error is signaled, and the node protocol server is killed.

receive (Function)

Syntax:

— Function: receive &key timeout

Arguments and Values:

timeout—a non-negative real denoting a time interval in seconds.

Description:

receive returns the next message for the calling agent. If the message is an exit message the calling agent exits immediately. If the mailbox of the calling agent is empty, receive will block until a message arrives.

If timeout is supplied receive will block for at most timeout seconds.

Exceptional Situations:

If timeout is supplied and the specified time interval exceeded an error of type timeout is signaled.

register (Function)

Syntax:

— Function: register name &optional agent

Arguments and Values:

name—a keyword.

agent—an agent. Default is the calling agent.

Description:

register associates name with agent.

Exceptional Situations:

If name is already associated with an agent an error of type simple-error is signaled.

registered (Function)

Syntax:

— Function: registered <no arguments>

Description:

registered returns a list of names associated with agents.

select (Macro)

Syntax:

— Macro: select &rest clauses

clauses::= normal-clause* [receive-clause]

normal-clause::= (poll-form vars body-form*)

receive-clause::= (:receive vars body-form*)

Arguments and Values:

poll-form, body-formforms.

vars—a list of symbols.

Description:

select repeatedly calls the poll-forms of each normal-clause (in order) until a poll-form returns a non-nil value as its first result and vars is non-nil. It then evaluates each body-form of the respective normal-clause with the return values of its poll-forms bound to vars and returns their result.

If a receive-clause is supplied and its vars are non-nil, select will evaluate each body-form of the clause with the received message bound to the first symbol in vars and return their result. If no receive-clause is supplied, select will silently discard incoming messages.

send (Function)

Syntax:

— Function: send message agent

Arguments and Values:

message—an object.

agent—an agent.

Description:

send transmits message to agent. There is no guarantee as to whether message could be successfully delivered.

Exceptional Situations:

If agent is a keyword that is not registered as a name an error of type simple-error is signaled.

spawn (Function)

Syntax:

— Function: spawn function &key attach mailbox-size node host

Arguments and Values:

function—a function designator or a call.

attach—either :link, :monitor, or nil. The default is nil.

mailbox-size—a positive unsigned integer. The default is *default-mailbox-size*.

node—a node name or nil. The default is nil.

host—a host as accepted by resolve-address. The default is the host name of the local node.

Description:

spawn starts and returns a new agent with a mailbox capacity of mailbox-size. If attach is :link or :monitor the calling agent will be linked to the new agent as if by link but before the agent is started. Once the agent is started it will execute function.

If node is non-nil the agent is started on node of host instead of the local node.

Affected By:

node

Exceptional Situations:

If spawn fails to start the agent an an error of type error is signaled.

timeout (Condition Type)

Class Precedence List:

timeout, error, serious-condition, condition, standard-object, t

Description:

Describes an error condition that can occur when using functions with a timeout. It denotes a that the operation was unable to successfully complete within a given duration.

unlink (Function)

Syntax:

— Function: unlink agent

Arguments and Values:

agent—an agent.

Description:

unlink removes any link between agent and the calling agent.

Exceptional Situations:

If agent is the calling agent an error of type simple-error is signaled.

If agent is a keyword that is not registered as a name an error of type simple-error is signaled.

unregister (Function)

Syntax:

— Function: unregister name

Arguments and Values:

name—a keyword.

Description:

unregister removes the registered name, associated with an agent.

Exceptional Situations:

If the name is not associated with an agent an error of type simple-error is signaled.

erlangen.management (Package)

Management extensions for Erlangen including functions for agent tree introspection, and retrieval of statistics for agents and remote connections.

agent-stats (Function)

Syntax:

— Function: agent-stats agent

messages-received, messages-dropped, birthtime, deathtime

Arguments and Values:

agent—an agent.

messages-received—a non-negative integer denoting the number of messages received by agent.

messages-dropped—a non-negative integer denoting the number of messages dropped by agent because its mailbox was full.

birthtime—a universal time denoting the time when agent was started.

deathtime—a universal time denoting the time when agent exited, or nil if agent has not exited.

Description:

agent-stats returns various current statistics for agent.

agent-tree (Function)

Syntax:

— Function: agent-tree agent

agent-tree

Arguments and Values:

agent—an agent.

agent-tree—an instance of class agent-tree.

Description:

agent-tree returns the current agent-tree whose root is agent.

agent-tree (Class)

Syntax:

— Class: agent-tree &key root linked monitored

Class Precedence List:

agent-tree, standard-object, t

Description:

Instances of class agent-tree denote views of the agent graph at a specific point in time. Their print-object method prints an elaborate description of that view when *print-readably* is nil.

connection-stats (Function)

Syntax:

— Function: connection-stats &optional host node

stats-for-connections

errors, established

Arguments and Values:

host—a string denoting a host name or nil. The default is nil.

node—a string denoting a node name or nil. The default is nil.

stats-for-connections—a list with one element for each matching connection. Each element is a list of four elements containing the host name, node name, errors, and established of the respective connection.

errors—a non-negative integer denoting the number of errors on the matching connection.

established—a universal time denoting the time when the matching connection was initially established, or nil denoting that the connection has not been established yet.

Description:

connection-stats returns essential statistics for connections to remote nodes. If called without arguments it returns stats-for-connections to all remote nodes to which connections where established. If host is supplied stats-for-connections includes only connections to host. If node is supplied connection-stats returns errors and established for the connection to node.

flush-messages (Function)

Syntax:

— Function: flush-messages &key print-p stream

Arguments and Values:

print-p—a generalized boolean. The default is true.

stream—an output stream. The default is *standard-output*.

Description:

flush-messages dequeues messages from the mailbox of the calling agent until there are no more pending messages. If print-p is true each dequeued message is printed to stream.

linked (Generic Function)

Syntax:

— Generic Function: linked agent‑tree

list

Arguments and Values:

agent-tree—an object of type agent-tree.

list—a list of agents.

Description:

linked returns a list of agents that are linked to but not monitored by the root agent of agent-tree.

monitored (Generic Function)

Syntax:

— Generic Function: monitored agent‑tree

subtrees

Arguments and Values:

agent-tree—an object of type agent-tree.

subtrees—a list of objects of type agent-tree.

Description:

monitored returns a list of the subtrees whose root agents are monitored by the root agent of agent-tree.

process-agent (Function)

Syntax:

— Function: process-agent process &key timeout

agent

Arguments and Values:

process—a process.

timeout—a non-negative real denoting a time interval in seconds. The default is 1.

agent—an agent or nil.

Description:

process-agent interrupts process to retrieve its associated agent. It returns the respective agent or nil. A return value of nil indicates that process could not be interrupted within the duration specified by timeout.

root (Generic Function)

Syntax:

— Generic Function: root agent‑tree

agent

Arguments and Values:

agent-tree—an object of type agent-tree.

agent—an agent.

Description:

root returns the agent that is the root of agent-tree.