Packages
finitomata
0.12.0
0.41.0
0.40.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.1
0.30.3
0.30.2
0.30.1
0.30.0
0.29.10
0.29.9
0.29.8
0.29.7
0.29.6
0.29.5
0.29.4
0.29.3
0.29.2
0.29.1
0.29.0
0.28.1
0.28.0
0.27.1
0.27.0
0.26.4
0.26.3
0.26.2
0.26.1
0.26.0
0.25.0
0.24.4
0.24.3
0.24.2
0.24.1
0.24.0
0.23.7
0.23.6
0.23.5
0.23.4
0.23.3
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.0
0.15.1
0.15.0
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.1
0.1.0
The FSM implementation generated from PlantUML textual representation.
Current section
Files
Jump to
Current section
Files
lib/finitomata/supervision/supervisor.ex
defmodule Finitomata.Supervisor do
@moduledoc false
use Supervisor
def start_link(id \\ nil)
def start_link([]), do: start_link(nil)
def start_link(id: id), do: start_link(id)
def start_link(id),
do: Supervisor.start_link(__MODULE__, id, name: fq_module(id, Supervisor, true))
@impl Supervisor
def init(id) do
children = [
{Registry,
keys: :unique, name: fq_module(id, Registry, true), partitions: System.schedulers_online()},
{Finitomata.Manager, name: fq_module(id, Manager, true)}
]
Supervisor.init(children, strategy: :rest_for_one)
end
@spec fq_module(id :: any(), who :: any(), atomize? :: boolean()) :: module() | [any()]
def fq_module(id, who, atomize? \\ false)
def fq_module(id, who, false), do: [Finitomata, id, who]
def fq_module(id, who, true) do
id
|> fq_module(who, false)
|> Enum.reject(&is_nil/1)
|> Enum.map(&inspect/1)
|> Module.concat()
end
end