Current section
Files
Jump to
Current section
Files
lib/rak.ex
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