Files
2026-03-09 23:09:46 -04:00

89 lines
2.0 KiB
Clojure

(ns Node
"Elixir Node module — distributed Erlang node operations.
In CljElixir: (Node/self), (Node/connect :other@host), etc.
For building distributed BEAM applications.")
(defn self
"Returns the current node name.
(Node/self) ;=> :mynode@myhost"
[])
(defn alive?
"Returns true if the local node is alive (part of a distributed system).
(Node/alive?) ;=> true"
[])
(defn list
"Returns a list of all connected nodes.
(Node/list) ;=> [:node1@host :node2@host]
(Node/list :known) ;=> includes known but disconnected nodes"
([])
([type]))
(defn connect
"Connects to a remote node.
(Node/connect :other@hostname) ;=> true"
[node])
(defn disconnect
"Disconnects from a remote node.
(Node/disconnect :other@hostname) ;=> true"
[node])
(defn monitor
"Monitors a remote node. Sends {:nodedown node} on disconnect.
(Node/monitor :other@hostname true)"
([node flag])
([node flag opts]))
(defn ping
"Pings a remote node.
(Node/ping :other@hostname) ;=> :pong or :pang"
[node])
(defn spawn
"Spawns a process on a remote node.
(Node/spawn :other@hostname (fn [] (IO/puts \"remote!\")))"
([node fun])
([node fun opts])
([node module fun args])
([node module fun args opts]))
(defn spawn-link
"Spawns a linked process on a remote node."
([node fun])
([node fun opts])
([node module fun args])
([node module fun args opts]))
(defn spawn-monitor
"Spawns a monitored process on a remote node."
([node fun])
([node fun opts])
([node module fun args])
([node module fun args opts]))
(defn get-cookie
"Returns the magic cookie for the node.
(Node/get-cookie) ;=> :nocookie or :somecookie"
[])
(defn set-cookie
"Sets the magic cookie.
(Node/set-cookie :my-secret-cookie)"
([cookie])
([node cookie]))
(defn start
"Starts distribution. Returns {:ok pid} or {:error reason}.
(Node/start :mynode :shortnames)"
([name])
([name type])
([name type tick-time]))
(defn stop
"Stops distribution.
(Node/stop) ;=> :ok"
[])