Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
1187 lines (1068 sloc) 25.1 KB
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CLERIC reference</title>
</head>
<body>
<h1>CLERIC reference</h1>
<p>Version 0.2.4.</p>
<p>
This is the reference document for CLERIC (Common Lisp Erlang Interface).
It describes all symbols exported from the <code>CLERIC</code>, and
<code>CLERIC-EPMD</code> packages.
</p>
<p>The latest version of this document is available here:
<a href="http://common-lisp.net/project/cleric/doc/cleric_reference.html">
http://common-lisp.net/project/cleric/doc/cleric_reference.html
</a>
</p>
<dl>
<dt><a href="#CLERIC">The CLERIC package</a></dt>
<dd><a href="#CLERIC_types-and-classes">Types and Classes</a></dd>
<dd><a href="#CLERIC_functions">Functions</a></dd>
<dd><a href="#CLERIC_variables">Variables</a></dd>
<dd><a href="#CLERIC_conditions">Conditions</a></dd>
<br/>
<dt><a href="#CLERIC-EPMD">The CLERIC-EPMD package</a></dt>
<dd><a href="#CLERIC-EPMD_functions">Functions</a></dd>
<dd><a href="#CLERIC-EPMD_conditions">Conditions</a></dd>
</dl>
<hr>
<a name="CLERIC" />
<h2>The CLERIC package</h2>
<p>
CLERIC is an implementation of the Erlang distribution protocol, making it
possible for a Lisp program to act as an <i>Erlang node</i>. Similar libraries
exist for other languages; <i>erl_interface</i> for C and <i>jinterface</i>
for Java are part of the official Erlang distribution.
</p>
<a name="CLERIC_types-and-classes" />
<h3>Types and Classes</h3>
<p>
<a name="cleric_erlang-translatable" />
[Type]<br>
<b>erlang-translatable</b>
<blockquote>
The type <i>erlang-translatable</i> contains all types of Lisp objects that
may be translated to Erlang objects.
</blockquote>
<br>
</p>
<p>
<a name="cleric_erlang-binary" />
[Standard class]<br>
<b>erlang-binary</b>
<blockquote>
Represents an Erlang binary.
</blockquote>
<br>
</p>
<p>
<a name="cleric_erlang-external-fun" />
[Standard class]<br>
<b>erlang-external-fun</b>
<blockquote>
Represents an Erlang external fun.
</blockquote>
<br>
</p>
<p>
<a name="cleric_erlang-new-internal-fun" />
[Standard class]<br>
<b>erlang-new-internal-fun</b>
<blockquote>
Represents an Erlang 'new' internal fun.
</blockquote>
<br>
</p>
<p>
<a name="cleric_erlang-old-internal-fun" />
[Standard class]<br>
<b>erlang-old-internal-fun</b>
<blockquote>
Represents an Erlang internal fun.
</blockquote>
<br>
</p>
<p>
<a name="cleric_erlang-pid" />
[Standard class]<br>
<b>erlang-pid</b>
<blockquote>
Represents an Erlang Pid.
</blockquote>
<br>
</p>
<p>
<a name="cleric_erlang-port" />
[Standard class]<br>
<b>erlang-port</b>
<blockquote>
Represents an Erlang Port.
</blockquote>
<br>
</p>
<p>
<a name="cleric_erlang-reference" />
[Standard class]<br>
<b>erlang-reference</b>
<blockquote>
Represents an Erlang reference.
</blockquote>
<br>
</p>
<p>
<a name="cleric_erlang-tuple" />
[Standard class]<br>
<b>erlang-tuple</b>
<blockquote>
<p>Represents an Erlang tuple.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_remote-node" />
[Standard class]<br>
<b>remote-node</b>
<blockquote>
Represents a remote Erlang node.
</blockquote>
<br>
</p>
<p>
<a name="cleric_exit" />
[Standard class]<br>
<b>exit</b>
<blockquote>
<i>Exit</i> message object.
</blockquote>
<br>
</p>
<p>
<a name="cleric_exit2" />
[Standard class]<br>
<b>exit2</b>
<blockquote>
<i>Exit2</i> message object.
</blockquote>
<br>
</p>
<p>
<a name="cleric_group-leader" />
[Standard class]<br>
<b>group-leader</b>
<blockquote>
<i>Group leader</i> message object.
</blockquote>
<br>
</p>
<p>
<a name="cleric_link" />
[Standard class]<br>
<b>link</b>
<blockquote>
<i>Link</i> message object.
</blockquote>
<br>
</p>
<p>
<a name="cleric_node-link" />
[Standard class]<br>
<b>node-link</b>
<blockquote>
<i>Node link</i> message object.
</blockquote>
<br>
</p>
<p>
<a name="cleric_reg-send" />
[Standard class]<br>
<b>reg-send</b>
<blockquote>
<i>Reg send</i> message object.
</blockquote>
<br>
</p>
<p>
<a name="cleric_send" />
[Standard class]<br>
<b>send</b>
<blockquote>
<i>Send</i> message object.
</blockquote>
<br>
</p>
<p>
<a name="cleric_unlink" />
[Standard class]<br>
<b>unlink</b>
<blockquote>
<i>Unlink</i> message object.
</blockquote>
<br>
</p>
<a name="CLERIC_functions" />
<h3>Functions</h3>
<p>
<a name="cleric_arity" />
[Generic function]<br>
<b>arity</b> <i>tuple-or-fun</i> => <i>arity</i>
<blockquote>
<p>
Returns the arity of <i>tuple-or-fun</i>. For tuples that means the number
of elements and for Funs the number of arguments.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_binary" />
[Function]<br>
<b>binary</b> <i><code>&amp;rest</code></i> <i>bytes</i> => <i>binary</i>
<blockquote>
<p>Creates a new binary from <i>bytes</i>.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_binary-to-string" />
[Function]<br>
<b>binary-to-string</b> <i>binary</i> => <i>string</i>
<blockquote>
<p>Converts <i>binary</i> to a string.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_bits-in-last-byte" />
[Generic function]<br>
<b>bits-in-last-byte</b> <i>binary</i> => <i>number-of-bits</i>
<blockquote>
Returns the number of bits used in the last byte of <i>binary</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_bytes" />
[Generic function]<br>
<b>bytes</b> <i>binary</i> => <i>bytes</i>
<blockquote>
<p>Returns a vector of bytes from <i>binary</i>.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_bytes-to-binary" />
[Function]<br>
<b>bytes-to-binary</b> <i>bytes</i> => <i>binary</i>
<blockquote>
<p>Creates a new binary from the byte sequence <i>bytes</i>.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_connected-remote-nodes" />
[Function]<br>
<b>connected-remote-nodes</b> <i></i> => <i>node-names</i>
<blockquote>
Returns a list of all the currently connected remote nodes.
</blockquote>
<br>
</p>
<p>
<a name="cleric_cookie" />
[Generic function]<br>
<b>cookie</b> <i>control-message</i> => <i>cookie</i>
<blockquote>
Returns the cookie in <i>control-message</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_decode" />
[Function]<br>
<b>decode</b> <i>bytes <code>&amp;key</code> start version-tag</i> =>
<i>erlang-term, position</i>
<blockquote>
<p>
<i>start</i> defaults to <code>0</code>.
<br/>
<i>version-tag</i> defaults to <code>131</code>.
</p>
Decodes the sequence <i>bytes</i> into Erlang terms, starting from position
<i>start</i>. <i>position</i> is the number of bytes consumed from
<i>bytes</i>. If <i>version-tag</i> is <i>true</i>, <i>bytes</i> is expected
to begin with a version tag.
</blockquote>
<br>
</p>
<p>
<a name="cleric_elements" />
[Generic function]<br>
<b>elements</b> <i>tuple</i> => <i>elements</i>
<blockquote>
<p>Returns a vector with the elements in <i>tuple</i>.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_encode" />
[Function]<br>
<b>encode</b> <i>term <code>&amp;key</code> version-tag compressed</i> =>
<i>bytes</i>
<blockquote>
<p>
<i>version-tag</i> defaults to <code>131</code>.
<br/>
<i>compressed</i> defaults to <code>NIL</code>.
</p>
Encodes <i>term</i> into a sequence of bytes. If <i>version-tag</i> has
an integer value, <i>bytes</i> will start with a version tag byte of that
value.
</blockquote>
<br>
</p>
<p>
<a name="cleric_erlang-translatable-p" />
[Function]<br>
<b>erlang-translatable-p</b> <i>object</i> => <i>boolean</i>
<blockquote>
Returns <i>true</i> if <i>object</i> can be encoded to an Erlang term.
</blockquote>
<br>
</p>
<p>
<a name="cleric_from-pid" />
[Generic function]<br>
<b>from-pid</b> <i>control-message</i> => <i>pid</i>
<blockquote>
Returns the Pid from which <i>control-message</i> was sent.
</blockquote>
<br>
</p>
<p>
<a name="cleric_link" />
[Function]<br>
<b>link</b> <i>from-pid to-pid</i> => <i>NIL</i>
<blockquote>
Establish a process link between <i>from-pid</i> and <i>to-pid</i>. Sends a
<i>Link</i> control message to the node where the process <i>to-pid</i> is
located.
</blockquote>
<br>
</p>
<p>
<a name="cleric_listening-p" />
[Function]<br>
<b>listening-p</b> => <i>boolean</i>
<blockquote>
Returns <i>true</i> if currently listening on a server socket.
</blockquote>
<br>
</p>
<p>
<a name="cleric_listening-port" />
[Function]<br>
<b>listening-port</b> => <i>port</i>
<blockquote>
Returns the port number of the listening (server) socket.
Returns <code>NIL</code> if not listening on a socket.
</blockquote>
<br>
</p>
<p>
<a name="cleric_make-atom" />
[Function]<br>
<b>make-atom</b> <i>string</i> => <i>symbol</i>
<blockquote>
Creates a symbol with name <i>string</i> which is interned in the package
defined by
<a href="#cleric_STatom-symbol-packageST">*atom-symbol-package*</a>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_make-pid" />
[Function]<br>
<b>make-pid</b> => <i>pid</i>
<blockquote>
Creates a Pid object. Useful for sending and receiving messages.
</blockquote>
<br>
</p>
<p>
<a name="cleric_make-reference" />
[Function]<br>
<b>make-reference</b> => <i>reference</i>
<blockquote>
Creates a unique Reference object.
</blockquote>
<br>
</p>
<p>
<a name="cleric_match-p" />
[Function]<br>
<b>match-p</b> <i>object-a</i> <i>object-b</i> => <i>boolean</i>
<blockquote>
Returns <i>true</i> if <i>object-a</i> and <i>object-b</i> match.
</blockquote>
<br>
</p>
<p>
<a name="cleric_message" />
[Generic function]<br>
<b>message</b> <i>control-message</i> => <i>message</i>
<blockquote>
Returns the message part of <i>control-message</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_module" />
[Generic function]<br>
<b>module</b> <i>erlang-fun</i> => <i>symbol</i>
<blockquote>
Returns the module of <i>erlang-fun</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_node" />
[Generic function]<br>
<b>node</b> <i>erlang-identifier</i> => <i>symbol</i>
<blockquote>
Returns the node of <i>erlang-identifier</i>. An Erlang identifier is either
a Pid, Port, or a reference object.
</blockquote>
<br>
</p>
<p>
<a name="cleric_node-name" />
[Function]<br>
<b>node-name</b> <i>full-node-name</i> => <i>name</i>
<blockquote>
Returns the short node name from <i>full-node-name</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_node-host" />
[Function]<br>
<b>node-host</b> <i>full-node-name</i> => <i>host</i>
<blockquote>
Returns the node hostname from <i>full-node-name</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_reason" />
[Generic function]<br>
<b>reason</b> <i>exit-control-message</i> => <i>term</i>
<blockquote>
Returns the reason of <i>exit-control-message</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_receive-node-messages" />
[Function]<br>
<b>receive-node-messages</b> <i><code>&amp;key</code> timeout</i> =>
<i>control-messages</i>
<blockquote>
<p>
<i>timeout</i> defaults to <code>NIL</code>.
</p>
<p>
Waits for and receives messages from connected nodes. Returns a list of
received messages.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_reg-send" />
[Function]<br>
<b>reg-send</b> <i>from-pid to-name node message</i> => <i>NIL</i>
<blockquote>
Sends <i>message</i> from <i>from-pid</i> to registered process
<i>to-name</i> on <i>node</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_remote-node-accept-connect" />
[Function]<br>
<b>remote-node-accept-connect</b> <i>cookie</i> => <i>full-node-name</i>
<blockquote>
<p>
Accept connection from a remote node and perform handshake using
<i>cookie</i>.
</p>
<p>
If the handshake is successful, the node is registered and the full node
name is returned.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_remote-node-connect" />
[Function]<br>
<b>remote-node-connect</b> <i>remote-node cookie</i> => <i>t</i>
<blockquote>
<p>
Connect and perform handshake with <i>remote-node</i>.
If the connection and handshake is successful the node is registered and
the full node name is returned.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_remote-node-host" />
[Generic function]<br>
<b>remote-node-host</b> <i>remote-node</i> => <i>host-string</i>
<blockquote>
Returns the host where <i>remote-node</i> is located.
</blockquote>
<br>
</p>
<p>
<a name="cleric_remote-node-name" />
[Generic function]<br>
<b>remote-node-name</b> <i>remote-node</i> => <i>node-name</i>
<blockquote>
Returns the node name of <i>remote-node</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_remote-node-port" />
[Generic function]<br>
<b>remote-node-port</b> <i>remote-node</i> => <i>port-number</i>
<blockquote>
Returns the port on which <i>remote-node</i> listens.
</blockquote>
<br>
</p>
<p>
<a name="cleric_remote-node-socket" />
[Generic function]<br>
<b>remote-node-socket</b> <i>remote-node</i> => <i>socket-object</i>
<blockquote>
Returns the <a href="http://common-lisp.net/project/usocket/">usocket</a>
<a href="http://common-lisp.net/project/usocket/api-docs.shtml#stream-usocket">
socket object
</a>
used for communicating with <i>remote-node</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_send" />
[Function]<br>
<b>send</b> <i>to-pid message</i> => <i>NIL</i>
<blockquote>
Sends <i>message</i> to <i>to-pid</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_size" />
[Generic function]<br>
<b>size</b> <i>tuple-or-binary</i> => <i>size</i>
<blockquote>
<p>
Returns the size of <i>tuple-or-binary</i> which means the number of
elements in a tuple or the number of bytes in a binary.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_start-listening" />
[Function]<br>
<b>start-listening</b> <i></i> => <i><code>T</code></i>
<blockquote>
<p>Opens a listening (server) socket to which other nodes may connect.</p>
<p>To accept connections from remote nodes, use
<a href="#cleric_remote-node-accept-connect">
<i>remote-node-accept-connect</i>
</a></p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_start-listening-on-socket-restart" />
[Function]<br>
<b>start-listening-on-socket-restart</b> <i>condition</i> =>
<i><code>T</code></i>
<blockquote>
<p>Invokes the <code>start-listening-on-socket</code> restart.</p>
<p><i>condition</i> is ignored.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_stop-listening" />
[Function]<br>
<b>stop-listening</b> <i></i> => <i><code>NIL</code></i>
<blockquote>
Closes the listening (server) socket.
</blockquote>
<br>
</p>
<p>
<a name="cleric_string-to-binary" />
[Function]<br>
<b>string-to-binary</b> <i>string</i> => <i>binary</i>
<blockquote>
<p>Creates a new binary from <i>string</i>.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_this-node" />
[Function]<br>
<b>this-node</b> <i></i> => <i>local-node-name</i>
<blockquote>
<p>
<i><b>setf</b>-able function.</i>
</p>
<p>
Returns the local node name.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_to-name" />
[Generic function]<br>
<b>to-name</b> <i>reg-send-control-message</i> => <i>registered-name</i>
<blockquote>
Returns the registered process name of the receiver of
<i>reg-send-control-message</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_to-pid" />
[Generic function]<br>
<b>to-pid</b> <i>control-message</i> => <i>pid</i>
<blockquote>
Returns the receiving Pid of <i>control-message</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_trace-token" />
[Generic function]<br>
<b>trace-token</b> <i>control-message</i> => <i>trace-token</i>
<blockquote>
Returns the trace token of <i>control-message</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_try-again-condition-p" />
[Function]<br>
<b>try-again-condition-p</b> <i>condition</i> => <i>boolean</i>
<blockquote>
Returns <i>true</i> if <i>condition</i> is of type
<a href="#cleric_try-again"><i>try-again</i></a>.
</blockquote>
<br>
</p>
<p>
<a name="cleric_try-connect-again-restart" />
[Function]<br>
<b>try-connect-again-restart</b> <i>condition</i> => <i><code>T</code></i>
<blockquote>
<p>Invokes the <code>try-connect-again</code> restart.</p>
<p><i>condition</i> is ignored.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_tuple" />
[Function]<br>
<b>tuple</b> <i><code>&amp;rest</code> objects</i> => <i>tuple</i>
<blockquote>
<p>Creates a new tuple containing <i>objects</i>.</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_unlink" />
[Function]<br>
<b>unlink</b> <i>from-pid to-pid</i> => <i>NIL</i>
<blockquote>
Unlinks <i>from-pid</i> and <i>to-pid</i>. Sends an <i>Unlink</i> control
message to the node where <i>to-pid</i> is located.
</blockquote>
<br>
</p>
<a name="CLERIC_variables" />
<h3>Variables</h3>
<p>
<a name="cleric_STatom-symbol-packageST" />
[Special variable]<br>
<b>*atom-symbol-package*</b>
<blockquote>
<p>
Initial value: <code>:KEYWORD</code>
</p>
<p>
Defines the package in which new symbols sent from remote nodes will be
interned.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_STerlang-false-is-lisp-nilST" />
[Special variable]<br>
<b>*erlang-false-is-lisp-nil*</b>
<blockquote>
<p>
Initial value: <code>NIL</code>
</p>
<p>
When <i>true</i>, the symbol <code>|false|</code> received from a remote
node will be translated to <code>NIL</code>.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_STerlang-string-is-lisp-stringST" />
[Special variable]<br>
<b>*erlang-string-is-lisp-string*</b>
<blockquote>
<p>
Initial value: <code>NIL</code>
</p>
<p>
When <i>true</i>, a string received from a remote node will be translated
to a string instead of a list of integers.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_STerlang-true-is-lisp-tST" />
[Special variable]<br>
<b>*erlang-true-is-lisp-t*</b>
<blockquote>
<p>
Initial value: <code>NIL</code>
</p>
<p>
When <i>true</i>, the symbol <code>|true|</code> received from a remote
node will be translated to <code>T</code>.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_STlisp-nil-at-tail-is-erlang-empty-listST" />
[Special variable]<br>
<b>*lisp-nil-at-tail-is-erlang-empty-list*</b>
<blockquote>
<p>
Initial value: <code>T</code>
</p>
<p>
When <i>true</i>, translate <code>NIL</code> at the tail of a list to an
empty list when sending to a remote node.
</p>
<p>
<i>Note: You will most likely never need to change this variable.</i>
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_STlisp-nil-is-erlang-empty-listST" />
[Special variable]<br>
<b>*lisp-nil-is-erlang-empty-list*</b>
<blockquote>
<p>
Initial value: <code>T</code>
</p>
<p>
When <i>true</i>, translate a non-tail <code>NIL</code> to an empty list
when sending to a remote node.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_STlisp-nil-is-erlang-falseST" />
[Special variable]<br>
<b>*lisp-nil-is-erlang-false*</b>
<blockquote>
<p>
Initial value: <code>NIL</code>
</p>
<p>
When <i>true</i>, translate a non-tail <code>NIL</code> to the symbol
<code>|false|</code> when sending to a remote node.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_STlisp-string-is-erlang-binaryST" />
[Special variable]<br>
<b>*lisp-string-is-erlang-binary*</b>
<blockquote>
<p>
Initial value: <code>NIL</code>
</p>
<p>
When <i>true</i>, translate a string to a binary when sending to a remote
node.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_STlisp-t-is-erlang-trueST" />
[Special variable]<br>
<b>*lisp-t-is-erlang-true*</b>
<blockquote>
<p>
Initial value: <code>NIL</code>
</p>
<p>
When <i>true</i>, translate <code>T</code> to the symbol
<code>|true|</code> when sending to a remote node.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric_PLhighest-version-supportedPL" />
[Constant variable]<br>
<b>+highest-version-supported+</b>
<blockquote>
Value: <code>5</code>
</blockquote>
<br>
</p>
<p>
<a name="cleric_PLlowest-version-supportedPL" />
[Constant variable]<br>
<b>+lowest-version-supported+</b>
<blockquote>
Value: <code>5</code>
</blockquote>
<br>
</p>
<a name="CLERIC_conditions" />
<h3>Conditions</h3>
<p>
<a name="cleric_already-listening-on-socket" />
[Condition]<br>
<b>already-listening-on-socket</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_connection-closed-error" />
[Condition]<br>
<b>connection-closed-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_handshake-failed-error" />
[Condition]<br>
<b>handshake-failed-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_malformed-external-erlang-term-error" />
[Condition]<br>
<b>malformed-external-erlang-term-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_malformed-message-error" />
[Condition]<br>
<b>malformed-message-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_node-unreachable-error" />
[Condition]<br>
<b>node-unreachable-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_not-implemented-error" />
[Condition]<br>
<b>not-implemented-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_not-listening-on-socket" />
[Condition]<br>
<b>not-listening-on-socket</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_try-again" />
[Condition]<br>
<b>try-again</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_unexpected-message-length-error" />
[Condition]<br>
<b>unexpected-message-length-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_unexpected-message-tag-error" />
[Condition]<br>
<b>unexpected-message-tag-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric_untranslatable-lisp-object-error" />
[Condition]<br>
<b>untranslatable-lisp-object-error</b>
<blockquote>
</blockquote>
<br>
</p>
<hr>
<a name="CLERIC-EPMD" />
<h2>The CLERIC-EPMD package</h2>
<p>
The <code>CLERIC-EPMD</code> package contains functions and other symbols
related to querying the Erlang Port Mapper Daemon (EPMD).
</p>
<a name="CLERIC-EPMD_functions" />
<h3>Functions</h3>
<p>
<a name="cleric-epmd_lookup-node" />
[Function]<br>
<b>lookup-node</b> <i>node-name <code>&amp;optional</code> host</i> =>
<i>remote-node</i>
<blockquote>
<p>
<i>host</i> defaults to <code>"localhost"</code>.
</p>
<p>
Queries the EPMD at <i>host</i> for node <i>node-name</i>.
If the node exists, a <a href="#cleric_remote-node"><i>remote-node</i></a>
object is returned representing that node.
Otherwise <code>NIL</code> is returned.
</p>
</blockquote>
<br>
</p>
<p>
<a name="cleric-epmd_print-all-registered-nodes" />
[Function]<br>
<b>print-all-registered-nodes</b>
<i><code>&amp;optional</code> host stream</i> => <i><code>T</code></i>
<blockquote>
<p>
<i>host</i> defaults to <code>"localhost"</code>.
<br/>
<i>stream</i> defaults to <code>T</code>.
</p>
Print to <i>stream</i> the names and listening port for all nodes registered
on the EPMD at <i>host</i>.
</blockquote>
<br>
</p>
<p>
<a name="cleric-epmd_publish" />
[Function]<br>
<b>publish</b> <i></i> => <i><code>T</code></i>
<blockquote>
Register on the EPMD to become visible to remote nodes.
</blockquote>
<br>
</p>
<p>
<a name="cleric-epmd_published-p" />
[Function]<br>
<b>published-p</b> <i></i> => <i>boolean</i>
<blockquote>
Returns <i>true</i> if registered on the EPMD.
</blockquote>
<br>
</p>
<p>
<a name="cleric-epmd_unpublish" />
[Function]<br>
<b>unpublish</b> <i></i> => <i><code>T</code></i>
<blockquote>
Unregister from the EPMD to stop being visible to remote nodes.
</blockquote>
<br>
</p>
<a name="CLERIC-EPMD_conditions" />
<h3>Conditions</h3>
<p>
<a name="cleric-epmd_already-registered" />
[Condition]<br>
<b>already-registered</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric-epmd_host-unknown-error" />
[Condition]<br>
<b>host-unknown-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric-epmd_response-error" />
[Condition]<br>
<b>response-error</b>
<blockquote>
</blockquote>
<br>
</p>
<p>
<a name="cleric-epmd_unreachable-error" />
[Condition]<br>
<b>unreachable-error</b>
<blockquote>
</blockquote>
<br>
</p>
</body>
</html>