lib/openagents/cluster/dynamic_supervisor.ex

main at 58e6347eeb72 · 586 B

defmodule OpenAgents.Cluster.DynamicSupervisor do
  @moduledoc """
  Cluster-aware wrapper around `Horde.DynamicSupervisor`.
  """

  @name OpenAgents.HordeSupervisor

  def start_link(opts), do: Horde.DynamicSupervisor.start_link(opts)

  @spec start_child(atom() | pid(), {module(), term()} | map()) ::
          DynamicSupervisor.on_start_child()
  def start_child(name \\ @name, spec) do
    spec =
      case spec do
        {mod, arg} -> {mod, arg}
        %{} -> spec
        _ when is_tuple(spec) -> spec
      end

    Horde.DynamicSupervisor.start_child(name, spec)
  end
end