Current section

Files

Jump to
x3m_system lib node_monitor.ex
Raw

lib/node_monitor.ex

defmodule X3m.System.NodeMonitor do
def child_spec(_opts) do
%{
id: __MODULE__,
start: {__MODULE__, :start_link, []},
type: :worker,
restart: :permanent,
shutdown: 500
}
end
def start_link do
{:ok,
spawn_link(fn ->
:global_group.monitor_nodes(true)
Process.register(self(), __MODULE__)
monitor()
end)}
end
def monitor do
receive do
{:nodeup, node} ->
X3m.System.Instrumenter.execute(:node_joined, %{}, %{node: node})
{:nodedown, node} ->
X3m.System.Instrumenter.execute(:node_left, %{}, %{node: node})
end
monitor()
end
end