Current section

Files

Jump to
rak lib rak.ex
Raw

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