Packages
x3m_system
0.4.3
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
retired
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
retired
0.7.7
0.7.6
retired
0.7.5
0.7.4
retired
0.7.3
retired
0.7.2
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
retired
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.1.1
0.1.0
Building blocks for distributed and/or CQRS/ES systems
Current section
Files
Jump to
Current section
Files
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