Packages

Fetch Gas Rates from gasprices.aaa.com.

Current section

Files

Jump to
gasrate lib gasrate.supervisor
Raw

lib/gasrate.supervisor

defmodule Gasrate.Supervisor do
use Supervisor
@registry_name :gas_rate_registry
def start_link do
Supervisor.start_link(__MODULE__, nil, name: __MODULE__)
end
def init(_) do
children = [worker(Gasrate.Server, [], restart: :transient)]
supervise(children, [strategy: :simple_one_for_one])
end
def start(id) do
Supervisor.start_child(__MODULE__, [ id ])
end
def stop(id) do
case Registry.lookup(@registry_name, id) do
[] -> :ok
[{pid, _}] ->
Process.exit(pid, :shutdown)
:ok
end
end
def whereis(id) do
case Registry.lookup(@registry_name, id) do
[{pid, _}] -> pid
[] -> nil
end
end
def find_or_create_process(id) do
if process_exists?(id) do
{:ok, id}
else
id |> start
end
end
def process_exists?(id) do
case Registry.lookup(@registry_name, id) do
[] -> false
_ -> true
end
end
end