Current section
Files
Jump to
Current section
Files
lib/future_butcher_engine/game_supervisor.ex
defmodule FutureButcherEngine.GameSupervisor do
use DynamicSupervisor
alias FutureButcherEngine.Game
def start_link(_options) do
DynamicSupervisor.start_link(__MODULE__, :ok, name: __MODULE__)
end
def init(:ok) do
DynamicSupervisor.init(strategy: :one_for_one, max_restarts: 1_000_000)
end
def start_game(name) do
spec = %{id: Game, start: {Game, :start_link, [name]}}
DynamicSupervisor.start_child(__MODULE__, spec)
end
def stop_game(name) do
:ets.delete(:game_state, name)
DynamicSupervisor.terminate_child(__MODULE__, pid_from_name(name))
end
defp pid_from_name(name) do
name
|> Game.via_tuple()
|> GenServer.whereis()
end
end