| 1 |
|
defmodule Agent.Tree do |
| 2 |
|
import Supervisor, only: [start_link: 2] |
| 3 |
|
|
| 4 |
|
def start_link({name, configs, opts, via}) do |
| 5 |
:-( |
start_link([session(name, configs, opts, via)], opts()) |
| 6 |
|
end |
| 7 |
|
|
| 8 |
|
defp session(name, configs, opts, via), |
| 9 |
:-( |
do: %{ |
| 10 |
|
id: :session, |
| 11 |
|
start: launch(name, configs, opts, via), |
| 12 |
|
restart: :transient, |
| 13 |
|
significant: true |
| 14 |
|
} |
| 15 |
|
|
| 16 |
|
defp launch(name, configs, opts, via), |
| 17 |
:-( |
do: {GenServer, :start_link, [Elita, {name, configs, opts}, [name: via]]} |
| 18 |
|
|
| 19 |
:-( |
defp opts, |
| 20 |
|
do: [ |
| 21 |
|
strategy: :rest_for_one, |
| 22 |
|
max_restarts: 3, |
| 23 |
|
max_seconds: 30, |
| 24 |
|
auto_shutdown: :any_significant |
| 25 |
|
] |
| 26 |
|
end |