Syntropy.LatticeSupervisor (syntropy v0.2.0)

Copy Markdown

DynamicSupervisor-backed lattice container.

Summary

Functions

add_agent(name, perspective, opts \\ [])

@spec add_agent(String.t(), String.t(), keyword()) ::
  {:ok, String.t()} | {:error, term()}

apply_persistent_join(agent_a_id, agent_b_id)

@spec apply_persistent_join(String.t(), String.t()) ::
  {:ok, String.t()} | {:error, term()}

apply_persistent_meet(agent_a_id, agent_b_id)

@spec apply_persistent_meet(String.t(), String.t()) ::
  {:ok, String.t()} | {:error, term()}

child_spec(arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

get_agent(agent_id)

@spec get_agent(String.t()) :: Syntropy.Agent.state() | nil

join(agent_a_id, agent_b_id)

@spec join(String.t(), String.t()) :: {:ok, String.t()} | {:error, term()}

list_agents()

@spec list_agents() :: [Syntropy.Agent.state()]

meet(agent_a_id, agent_b_id)

@spec meet(String.t(), String.t()) :: {:ok, String.t()} | {:error, term()}

remove_agent(agent_id)

@spec remove_agent(String.t()) :: :ok | {:error, :not_found}

Terminates a locally supervised agent and clears its retained knowledge.

Works for both permanent and temporary agents. Returns {:error, :not_found} when no agent with the given id is registered on this node.

start_link(opts \\ [])

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