Current section

Files

Jump to
push_ex lib push_ex application.ex
Raw

lib/push_ex/application.ex

defmodule PushEx.Application do
@moduledoc false
use Application
def start(_type, _args) do
check_config!()
set_pool_size()
children = [
PushEx.Push.ItemProducer,
PushEx.Push.ItemConsumer,
PushEx.Instrumentation.Tracker,
PushEx.Instrumentation.Supervisor
]
opts = [strategy: :one_for_one, name: PushEx.Supervisor]
Supervisor.start_link(children, opts)
end
def config_change(changed, _new, removed) do
PushExWeb.Endpoint.config_change(changed, removed)
:ok
end
def pool_size do
Application.get_env(:push_ex, :internal_pool_size, 1)
end
defp set_pool_size() do
presence_pool_size =
Application.get_env(:push_ex, PushExWeb.Endpoint)
|> Keyword.get(:pubsub, [])
|> Keyword.get(:pool_size, 1)
Application.put_env(:push_ex, :internal_pool_size, presence_pool_size)
end
if Mix.env() == :test do
defp check_config!(), do: nil
else
defp check_config!(), do: PushEx.Config.check!()
end
end