defmodule Rak do @moduledoc """ Documentation for Rak. """ use Application use Supervisor @doc """ Start the Rak server. This generally will only start the global supervisor for this Rak server, but you may want to add additional configuration steps here. """ def start(_type, args) do Rak.start_link(args) end def start_link(args) do Supervisor.start_link(__MODULE__, args, name: __MODULE__) end def init(args) do [ message: Rak.Message.Raw, main: Rak.Service, modules: :auto, #load all modules under App.Modules metrics: Rak.Metrics.Prometheus, discovery: Rak.Discovery.Consul, session: Rak.Session.Basic, connector: Connector.Web, ] Supervisor.init([ # Main server APIs Rak.Service.child_spec(args), # Modules Rak.Session.Basic.child_spec(args), # Metrics store Rak.Discovery.Consul.child_spec(args), # Discovery & clustering Rak.Discovery.Consul.child_spec(args), # Networking - plug session and message here Rak.Connector.Web.child_spec(args), ], strategy: :one_for_one) end end