Orcha behaviour (Orcha v0.0.3)

Summary

Types

callback()

@type callback() :: {module(), func :: atom(), args :: list()}

message()

@type message() :: term()

realm()

@opaque realm()

Callbacks

handle_request(message, realm, state)

@callback handle_request(message(), realm(), state :: term()) ::
  {result :: term(), new_state :: term()}
  | {result :: term(), new_state :: term(), new_realm :: realm()}

Functions

initialize(args \\ [])

register(realm, mod)

@spec register(realm(), callback() | module()) :: realm()

request(arg, realm)

@spec request(
  {module(), message()},
  realm()
) :: {:ok, result :: term(), realm()} | {:error, reason :: term()}