| 1 |
|
defmodule Elita.Application do |
| 2 |
|
use Application |
| 3 |
|
|
| 4 |
|
import Agent.Manager, only: [launch: 0] |
| 5 |
|
import Elita, only: [prime: 0] |
| 6 |
|
import Elita.Ready, only: [up: 0] |
| 7 |
|
import Mem, only: [setup: 0] |
| 8 |
|
import Supervisor, only: [start_link: 2] |
| 9 |
|
import Sweep, only: [sweep: 0] |
| 10 |
|
|
| 11 |
|
def start(_type, _args) do |
| 12 |
1 |
setup() |
| 13 |
1 |
sweep() |
| 14 |
1 |
boot() |
| 15 |
|
end |
| 16 |
|
|
| 17 |
1 |
defp boot do |
| 18 |
1 |
{:ok, supervisor} = run() |
| 19 |
1 |
launch() |
| 20 |
1 |
finish() |
| 21 |
|
{:ok, supervisor} |
| 22 |
|
end |
| 23 |
|
|
| 24 |
|
defp finish do |
| 25 |
1 |
{:ok, _} = prime() |
| 26 |
1 |
up() |
| 27 |
|
end |
| 28 |
|
|
| 29 |
|
defp run do |
| 30 |
1 |
start_link(specs(), opts()) |
| 31 |
|
end |
| 32 |
|
|
| 33 |
1 |
defp specs, |
| 34 |
|
do: [ |
| 35 |
|
{Elita.Kernel, nil}, |
| 36 |
|
{Elita.Infra, nil}, |
| 37 |
|
{Task.Supervisor, name: Elita.Tasks} |
| 38 |
|
] |
| 39 |
|
|
| 40 |
1 |
defp opts, |
| 41 |
|
do: [ |
| 42 |
|
strategy: :one_for_one, |
| 43 |
|
name: Elita.Supervisor, |
| 44 |
|
max_restarts: 3, |
| 45 |
|
max_seconds: 60 |
| 46 |
|
] |
| 47 |
|
end |