defmodule Localiser.Localisation.Floor.Server do use Supervisor alias Localiser.Localisation.Room alias Localiser.Localisation.Sensor def start_link(floor) do Supervisor.start_link(__MODULE__, floor, name: via(floor.id)) end def via(floor_id) do {:via, Registry, {Localiser.Registry, {:floor_server, floor_id}}} end @impl true def init(floor) do children = [ {Room.Supervisor, floor}, {Sensor.Supervisor, floor}, {Sensor.Manager, floor} ] Supervisor.init(children, strategy: :one_for_one) end end