aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl
blob: f57d029ba1ae41255a6e7945289a52fc1ee9d974 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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).