Packages
horde
0.2.2
0.10.0
0.9.1
0.9.0
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.8.0-rc.1
0.7.1
0.7.0
0.6.1
0.6.0
0.6.0-rc.1
0.5.0
0.5.0-rc.12
0.5.0-rc.11
0.5.0-rc.10
0.5.0-rc.9
0.5.0-rc.8
0.5.0-rc.7
0.5.0-rc.6
0.5.0-rc.5
0.5.0-rc.4
0.5.0-rc.3
0.5.0-rc.2
0.5.0-rc.1
0.4.0-rc.2
0.4.0-rc.1
0.3.0
0.3.0-rc1
0.2.3
0.2.2
0.2.1
0.2.0
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Distributed supervisor & process registry built with DELTA-CRDTs
Current section
Files
Jump to
Current section
Files
lib/horde/process_canary.ex
defmodule Horde.ProcessCanary do
@moduledoc false
use GenServer
def child_spec(args) do
%{id: __MODULE__, start: {__MODULE__, :start_link, [args]}, shutdown: 1_000}
end
def start_link(args) do
GenServer.start_link(__MODULE__, args)
end
def init({child_spec, graceful_shutdown_manager}) do
Process.flag(:trap_exit, true)
{:ok, {child_spec, graceful_shutdown_manager}}
end
def terminate(reason, {child_spec, graceful_shutdown_manager}) do
GenServer.cast(graceful_shutdown_manager, {:shut_down, child_spec})
end
end