Current section
Files
Jump to
Current section
Files
lib/kvasir/agent_server/agents/noop_agent.ex
defmodule Kvasir.AgentServer.NOOPAgent.Source do
@moduledoc false
@doc false
@spec __topics__() :: map
def __topics__(),
do: %{
"noop" => %{
key: Kvasir.Key.Integer,
partitions: 100
}
}
end
defmodule Kvasir.AgentServer.NOOPAgent.Cache do
@moduledoc false
@doc false
@spec init(any, any, any) :: :ok
def init(_, _, _), do: :ok
@doc false
@spec load(any, any, any) :: {:ok, 0, nil}
def load(_, _, _) do
{:ok, 0, nil}
end
@doc false
@spec track_command(any, any, any) :: {:ok, 0}
def track_command(_, _, _) do
{:ok, 0}
end
end
defmodule Kvasir.AgentServer.NOOPAgent do
@moduledoc ~S"""
A NOOP agent.
Executes the command, but never executes.
"""
@doc ~S"""
Create a customized NOOP agent.
"""
def customized(name, opts \\ []) do
Code.compile_quoted(
quote do
defmodule unquote(name) do
use Kvasir.Agent,
registry: Kvasir.Agent.Registry.Local,
source: unquote(opts[:source] || Kvasir.AgentServer.NOOPAgent.Source),
cache: unquote(opts[:cache] || Kvasir.AgentServer.NOOPAgent.Cache),
model: Kvasir.AgentServer.NOOPAgent,
topic: unquote(opts[:topic] || "noop")
end
end
)
end
use Kvasir.Agent,
registry: Kvasir.Agent.Registry.Local,
source: Kvasir.AgentServer.NOOPAgent.Source,
cache: Kvasir.AgentServer.NOOPAgent.Cache,
model: Kvasir.AgentServer.NOOPAgent,
topic: "noop"
@doc false
@spec base(any) :: nil
def base(_), do: nil
@doc false
@spec apply(any, any) :: :ok
def apply(_, _), do: :ok
@doc false
@spec execute(any, any) :: :ok
def execute(_, _), do: :ok
end