Current section
Files
Jump to
Current section
Files
lib/mdns_lite/application.ex
defmodule MdnsLite.Application do
@moduledoc false
use Application
defmodule RuntimeSupervisor do
use Supervisor
@moduledoc false
def start_link(init_arg) do
Supervisor.start_link(__MODULE__, init_arg, name: __MODULE__)
end
@impl true
def init(_init_arg) do
ip_address_monitor =
Application.get_env(
:mdns_lite,
:ip_address_monitor,
default_monitor()
)
children = [
{Registry, keys: :unique, name: MdnsLite.ResponderRegistry},
{MdnsLite.ResponderSupervisor, []},
ip_address_monitor
]
Supervisor.init(children, strategy: :one_for_all)
end
defp default_monitor() do
excluded_ifnames = Application.get_env(:mdns_lite, :excluded_ifnames, ["lo0", "lo"])
if Code.ensure_loaded?(VintageNet) do
{MdnsLite.VintageNetMonitor, excluded_ifnames: excluded_ifnames}
else
{MdnsLite.InetMonitor, excluded_ifnames: excluded_ifnames}
end
end
end
@impl true
def start(_type, _args) do
children = [
{MdnsLite.Configuration, []},
RuntimeSupervisor
]
opts = [strategy: :rest_for_one, name: MdnsLite.Supervisor]
Supervisor.start_link(children, opts)
end
end