Orcha behaviour (Orcha v0.0.5)

Summary

Types

callback()

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

message()

@type message() :: any()

realm()

@opaque realm()

service_state()

@type service_state() :: any()

Callbacks

handle_request(message, realm, service_state)

@callback handle_request(message(), realm(), service_state()) ::
  {:result, result :: any()}
  | {:result, result :: any(), service_state()}
  | {:result, result :: any(), service_state(), realm()}

Functions

initialize()

@spec initialize() :: realm()

register(realm, mod)

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

request(arg, realm)

@spec request(
  {module(), message()},
  realm()
) :: result :: any() | {result :: any(), realm()}