File 6632-kernel-Document-net_kernel-get_state-0.patch of Package erlang
From b54a69fa0d1da8ab408df841a50d974685eb9c32 Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Tue, 15 Feb 2022 21:42:48 +0100
Subject: [PATCH 2/3] kernel: Document net_kernel:get_state/0
---
lib/kernel/doc/src/net_kernel.xml | 77 +++++++++++++++++++++++++++++++
lib/kernel/src/net_kernel.erl | 4 ++
2 files changed, 81 insertions(+)
diff --git a/lib/kernel/doc/src/net_kernel.xml b/lib/kernel/doc/src/net_kernel.xml
index 6ffe063e91..76eb0ad7ec 100644
--- a/lib/kernel/doc/src/net_kernel.xml
+++ b/lib/kernel/doc/src/net_kernel.xml
@@ -149,6 +149,83 @@ $ <input>erl -sname foobar</input></pre>
</desc>
</func>
+ <func>
+ <name name="get_state" arity="0" since="OTP 25.0"/>
+ <fsummary>Get various distribution state.</fsummary>
+ <desc>
+ <p>Get the current state of the distribution for the local node.</p>
+ <p>Returns a map with (at least) the following key-vale pairs:</p>
+ <taglist>
+ <tag><c>started => Started</c></tag>
+ <item>
+ <p>Valid values for <c>Started</c>:</p>
+ <taglist>
+ <tag><c>no</c></tag>
+ <item>
+ <p>The distribution is not started. In this state none of
+ the other keys below are present in the map.</p>
+ </item>
+ <tag><c>static</c></tag>
+ <item>
+ <p>The distribution was started with command line arguments
+ <seecom marker="erts:erl#name"><c>-name</c></seecom> or
+ <seecom marker="erts:erl#sname"><c>-sname</c></seecom>.</p>
+ </item>
+ <tag><c>dynamic</c></tag>
+ <item>
+ <p>The distribution was started with
+ <seemfa marker="#start/1"><c>net_kernel:start/1</c></seemfa>
+ and can be stopped with
+ <seemfa marker="#start/1"><c>net_kernel:stop/0</c></seemfa>.</p>
+ </item>
+ </taglist>
+ </item>
+ <tag><c>name => Name</c></tag>
+ <item>
+ <p>The name of the node. Same as returned by
+ <seemfa marker="erts:erlang#node/0"><c>erlang:node/0</c></seemfa>
+ except when <c>name_type</c> is <c>dynamic</c> in which case
+ <c>Name</c> may be <c>undefined</c> (instead of <c>nonode@nohost</c>).
+ </p>
+ </item>
+ <tag><c>name_type => NameType</c></tag>
+ <item>
+ <p>Valid values for <c>NameType</c>:</p>
+ <taglist>
+ <tag><c>static</c></tag>
+ <item>
+ <p>The node has a static node name set by the node itself.</p>
+ </item>
+ <tag><c>dynamic</c></tag>
+ <item>
+ <p>The distribution was started in
+ <seeguide marker="system/reference_manual:distributed#dyn_node_name">
+ dynamic node name</seeguide> mode, and will get its node name assigned
+ from the first node it connects to. If key <c>name</c> has value
+ <c>undefined</c> that has not happened yet.</p>
+ </item>
+ </taglist>
+ </item>
+ <tag><c>name_domain => NameDomain</c></tag>
+ <item>
+ <p>Valid values for <c>NameDomain</c>:</p>
+ <taglist>
+ <tag><c>short</c></tag>
+ <item>
+ <p>The distribution was started to use node names with a short
+ host portion (not fully qualified).</p>
+ </item>
+ <tag><c>long</c></tag>
+ <item>
+ <p>The distribution was started to use node names with a long
+ fully qualified host portion.</p>
+ </item>
+ </taglist>
+ </item>
+ </taglist>
+ </desc>
+ </func>
+
<func>
<name name="monitor_nodes" arity="1" since=""/>
<name name="monitor_nodes" arity="2" since=""/>
diff --git a/lib/kernel/src/net_kernel.erl b/lib/kernel/src/net_kernel.erl
index 8252b6ebcf..3a819eb4d5 100644
--- a/lib/kernel/src/net_kernel.erl
+++ b/lib/kernel/src/net_kernel.erl
@@ -196,6 +196,10 @@ longnames() -> request(longnames).
nodename() -> request(nodename).
+-spec get_state() -> #{started => no | static | dynamic,
+ name => atom(),
+ name_type => static | dynamic,
+ name_domain => short | long}.
get_state() ->
case whereis(net_kernel) of
undefined ->
--
2.34.1