aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl
diff options
context:
space:
mode:
Diffstat (limited to 'aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl')
-rw-r--r--aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl33
1 files changed, 33 insertions, 0 deletions
diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl
new file mode 100644
index 0000000..f57d029
--- /dev/null
+++ b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl
@@ -0,0 +1,33 @@
+-module(gleam@erlang@node).
+-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]).
+
+-export([self/0, visible/0, connect/1, send/3, to_atom/1]).
+-export_type([node_/0, do_not_leak/0, connect_error/0]).
+
+-type node_() :: any().
+
+-type do_not_leak() :: any().
+
+-type connect_error() :: failed_to_connect | local_node_is_not_alive.
+
+-spec self() -> node_().
+self() ->
+ erlang:node().
+
+-spec visible() -> list(node_()).
+visible() ->
+ erlang:nodes().
+
+-spec connect(gleam@erlang@atom:atom_()) -> {ok, node_()} |
+ {error, connect_error()}.
+connect(Node) ->
+ gleam_erlang_ffi:connect_node(Node).
+
+-spec send(node_(), gleam@erlang@atom:atom_(), any()) -> nil.
+send(Node, Name, Message) ->
+ erlang:send({Name, Node}, Message),
+ nil.
+
+-spec to_atom(node_()) -> gleam@erlang@atom:atom_().
+to_atom(Node) ->
+ gleam_erlang_ffi:identity(Node).