# defmodule Kvasir.AgentServer.EchoAgent do # @moduledoc ~S""" # An Echo agent. # """ # use Kvasir.Command.Dispatcher # @doc false # @impl Kvasir.Command.Dispatcher # def do_dispatch(cmd = %{__meta__: meta}) do # n = UTCDateTime.utc_now() # m = # case meta.wait do # :dispatch -> %{meta | dispatched: n} # :execute -> %{meta | dispatched: n, executed: n} # :apply -> %{meta | dispatched: n, executed: n, applied: n} # end # {:ok, %{cmd | __meta__: m}} # end # ### Fake Agent ### # @doc false # @spec child_spec(Keyword.t()) :: map # def child_spec(_opts \\ []), do: %{id: :echo, start: {Agent, :start_link, [fn -> 0 end]}} # @doc false # @spec dispatch!(Kvasir.Command.t(), Keyword.t()) :: Kvasir.Command.t() | no_return # def dispatch!(command, opts \\ []) do # case dispatch(command, opts) do # {:ok, cmd} -> cmd # {:error, err} -> raise "Command dispatch failed: #{inspect(err)}." # end # end # @doc false # @spec open(any) :: {:ok, pid} | {:error, atom} # def open(_id), do: {:error, :mock_agent} # # @doc false # # @spec inspect(any) :: {:ok, term} | {:error, atom} # # def inspect(_id), do: {:error, :mock_agent} # @doc false # @spec count :: non_neg_integer # def count, do: 0 # @doc false # @spec list :: [term] # def list, do: [] # @doc false # @spec whereis(any) :: pid | nil # def whereis(_id), do: nil # @doc false # @spec alive?(any) :: boolean # def alive?(_id), do: false # @doc false # @spec sleep(id :: any, reason :: atom) :: :ok # def sleep(_id, _reason \\ :sleep), do: :ok # @doc false # @spec config(component :: atom, opts :: Keyword.t()) :: Keyword.t() # def config(_component, opts), do: opts # defoverridable config: 2 # @doc false # @spec __agent__(atom) :: term # def __agent__(:config), # do: %{ # agent: __MODULE__, # cache: false, # source: false, # model: false, # registry: false, # topic: false, # key: false # } # def __agent__(:topic), do: false # def __agent__(:key), do: false # end