Packages
ecto_watch
0.10.0
1.1.0
1.0.0
0.15.1
0.15.0
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.2
0.11.1
0.11.0
0.10.0
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.0
0.6.0
0.6.0-rc2
0.6.0-rc1
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
EctoWatch allows you to easily get Phoenix.PubSub notifications directly from postgresql.
Current section
Files
Jump to
Current section
Files
lib/ecto_watch/watcher_supervisor.ex
defmodule EctoWatch.WatcherSupervisor do
@moduledoc """
Internal Supervisor for postgres notification watchers (`EctoWatch.WatcherServer`)
Used internally, but you'll see it in your application supervision tree.
"""
alias EctoWatch.WatcherServer
use Supervisor
def start_link(options) do
Supervisor.start_link(__MODULE__, options, name: __MODULE__)
end
def init(options) do
children =
Enum.map(options.watchers, fn watcher_options ->
%{
id: WatcherServer.name(watcher_options),
start:
{WatcherServer, :start_link,
[{options.repo_mod, options.pub_sub_mod, watcher_options}]}
}
end)
Supervisor.init(children, strategy: :one_for_one)
end
def watcher_details do
case Process.whereis(__MODULE__) do
nil ->
{:error, "WatcherSupervisor is not running!"}
pid ->
{:ok,
Supervisor.which_children(pid)
|> Enum.map(fn {_, pid, :worker, [EctoWatch.WatcherServer]} ->
WatcherServer.details(pid)
end)}
end
end
end