|
|
@@ -1,44 +1,48 @@
|
|
|
defmodule GenReset.Tracker do
|
|
|
- use GenServer
|
|
|
- use GenReset
|
|
|
+ use GenServer
|
|
|
|
|
|
- @initial_state []
|
|
|
+ @initial_state []
|
|
|
|
|
|
- def start_link(_args) do
|
|
|
- GenServer.start_link(__MODULE__, nil, name: __MODULE__)
|
|
|
- end
|
|
|
+ def start_link(_args) do
|
|
|
+ GenServer.start_link(__MODULE__, nil, name: __MODULE__)
|
|
|
+ end
|
|
|
|
|
|
- def init(_args) do
|
|
|
- register_gen_reset(@initial_state)
|
|
|
+ def init(_args) do
|
|
|
{:ok, @initial_state}
|
|
|
end
|
|
|
|
|
|
def add(pid) do
|
|
|
- GenServer.call(__MODULE__, {:add, pid})
|
|
|
+ GenServer.call(__MODULE__, {:add, pid})
|
|
|
end
|
|
|
|
|
|
def remove(pid) do
|
|
|
- GenServer.call(__MODULE__, {:remove, pid})
|
|
|
+ GenServer.call(__MODULE__, {:remove, pid})
|
|
|
end
|
|
|
|
|
|
def pids do
|
|
|
- GenServer.call(__MODULE__, :pids)
|
|
|
+ GenServer.call(__MODULE__, :pids)
|
|
|
+ end
|
|
|
+
|
|
|
+ def reset do
|
|
|
+ GenServer.call(__MODULE__, :reset)
|
|
|
end
|
|
|
|
|
|
def handle_call({:add, pid}, _from, state) do
|
|
|
- Process.monitor(pid)
|
|
|
- {:reply, :ok, state ++ [pid]}
|
|
|
+ Process.monitor(pid)
|
|
|
+ {:reply, :ok, state ++ [pid]}
|
|
|
end
|
|
|
|
|
|
def handle_call({:remove, pid}, _from, state) do
|
|
|
- {:reply, :ok, state -- [pid]}
|
|
|
+ {:reply, :ok, state -- [pid]}
|
|
|
end
|
|
|
|
|
|
+
|
|
|
+ def handle_call(:pids, _from, state), do: {:reply, state, state}
|
|
|
+
|
|
|
+ def handle_call(:reset, _from, _state), do: {:reply, :ok, []}
|
|
|
+
|
|
|
def handle_info({:DOWN, _ref, :process, object, _reason}, state) do
|
|
|
- IO.puts "Received down message"
|
|
|
- IO.inspect(object)
|
|
|
- {:noreply, state -- [object]}
|
|
|
+ {:noreply, state -- [object]}
|
|
|
end
|
|
|
|
|
|
- def handle_call(:pids, _from, state), do: {:reply, state, state}
|
|
|
end
|