Orcha behaviour (Orcha v0.0.2)

Summary

Types

callback()

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

message()

@type message() :: term()

realm()

@opaque realm()

request_info()

@type request_info() :: {timestamp(), realm()}

timestamp()

@type timestamp() :: pos_integer()

Callbacks

handle_request(message, request_info, state)

@callback handle_request(message(), request_info(), 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, timestamp, realm)

@spec request({module(), message()}, timestamp(), realm()) ::
  {result :: term(), realm()}