Packages
gleam_erlang
1.0.0
1.3.0
1.2.0
1.1.0
1.0.0
1.0.0-rc1
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.18.0-rc1
retired
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Types and functions for programs running on Erlang!
Current section
Files
Jump to
Current section
Files
src/gleam@erlang@node.erl
-module(gleam@erlang@node).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-define(FILEPATH, "src/gleam/erlang/node.gleam").
-export([self/0, visible/0, connect/1, name/1]).
-export_type([node_/0, connect_error/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Multiple Erlang VM instances can form a cluster to make a distributed\n"
" Erlang system, talking directly to each other using messages rather than\n"
" other communication protocols like HTTP. In a distributed Erlang system\n"
" each virtual machine is called a _node_. This module provides Node related\n"
" types and functions to be used as a foundation by other packages providing\n"
" more specialised functionality.\n"
"\n"
" For more information on distributed Erlang systems see the Erlang\n"
" documentation: <https://www.erlang.org/doc/system/distributed.html>.\n"
).
-type node_() :: any().
-type connect_error() :: failed_to_connect | local_node_is_not_alive.
-file("src/gleam/erlang/node.gleam", 18).
?DOC(" Return the current node.\n").
-spec self() -> node_().
self() ->
erlang:node().
-file("src/gleam/erlang/node.gleam", 31).
?DOC(
" Return a list of all visible nodes in the cluster, not including the current\n"
" node.\n"
"\n"
" The current node can be included by calling `self()` and prepending the\n"
" result.\n"
"\n"
" ```gleam\n"
" let all_nodes = [node.self(), ..node.visible()]\n"
" ```\n"
).
-spec visible() -> list(node_()).
visible() ->
erlang:nodes().
-file("src/gleam/erlang/node.gleam", 52).
?DOC(
" Establish a connection to a node, so the nodes can send messages to each\n"
" other and any other connected nodes.\n"
"\n"
" Returns `Error(FailedToConnect)` if the node is not reachable.\n"
"\n"
" Returns `Error(LocalNodeIsNotAlive)` if the local node is not alive, meaning\n"
" it is not running in distributed mode.\n"
).
-spec connect(gleam@erlang@atom:atom_()) -> {ok, node_()} |
{error, connect_error()}.
connect(Node) ->
gleam_erlang_ffi:connect_node(Node).
-file("src/gleam/erlang/node.gleam", 63).
?DOC(
" Get the atom name of a node.\n"
"\n"
" ## Examples\n"
"\n"
" ```gleam\n"
" assert name(my_node) == atom.create(\"app1@localhost\")\n"
" ```\n"
).
-spec name(node_()) -> gleam@erlang@atom:atom_().
name(Node) ->
gleam_erlang_ffi:identity(Node).