Jido.MCP.ClientPool (Jido MCP v1.0.0)

Copy Markdown View Source

Shared client pool that manages one Anubis client per configured endpoint.

Summary

Types

client_ref()

@type client_ref() :: %{
  client: GenServer.name(),
  supervisor: GenServer.name(),
  transport: GenServer.name()
}

Functions

await_ready(map, timeout \\ 5000)

@spec await_ready(client_ref(), timeout()) :: :ok | {:error, term()}

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

endpoint_ids()

@spec endpoint_ids() :: [atom()]

endpoint_status(endpoint_id)

@spec endpoint_status(atom()) :: {:ok, map()} | {:error, term()}

endpoints()

@spec endpoints() :: Jido.MCP.Config.endpoints()

ensure_client(endpoint_id)

@spec ensure_client(atom()) ::
  {:ok, Jido.MCP.Endpoint.t(), client_ref()} | {:error, term()}

fetch_endpoint(endpoint_id)

@spec fetch_endpoint(atom()) ::
  {:ok, Jido.MCP.Endpoint.t()} | {:error, :unknown_endpoint}

refresh(endpoint_id)

@spec refresh(atom()) :: {:ok, Jido.MCP.Endpoint.t(), client_ref()} | {:error, term()}

register_endpoint(endpoint)

@spec register_endpoint(Jido.MCP.Endpoint.t()) ::
  {:ok, Jido.MCP.Endpoint.t()}
  | {:error,
     {:endpoint_already_registered, atom()} | {:invalid_endpoint, term()}}

resolve_endpoint_id(endpoint_id)

@spec resolve_endpoint_id(term()) ::
  {:ok, atom()}
  | {:error, :endpoint_required | :invalid_endpoint_id | :unknown_endpoint}

start_link(opts \\ [])

@spec start_link(keyword()) :: GenServer.on_start()

unregister_endpoint(endpoint_id)

@spec unregister_endpoint(atom()) ::
  {:ok, Jido.MCP.Endpoint.t()} | {:error, :unknown_endpoint}