View Source SpawnSdk.Actor behaviour (spawn_sdk v0.5.0-rc.7)

Documentation for Actor.

Actor look like this:

defmodule MyActor do

use SpawnSdk.Actor,
  name: "joe",
  persistent: false,
  state_type: Io.Eigr.Spawn.Example.MyState,
  deactivate_timeout: 5_000,
  snapshot_timeout: 2_000

require Logger
alias Io.Eigr.Spawn.Example.{MyState, MyBusinessMessage}

defact sum(%MyBusinessMessage{value: value} = data}, %Context{state: state} = ctx) do
  Logger.info("Received Request...")

  new_value = (state.value || 0) + value

  %Value{}
  |> Value.of(%MyBusinessMessage{value: new_value}, %MyState{value: new_value})
  |> Value.reply!()
end

Link to this section Summary

Link to this section Types

Link to this section Callbacks

Link to this callback

handle_command({}, context)

View Source
@callback handle_command(
  {command(), data()},
  context()
) :: {:reply, value()} | {:error, error()} | {:error, error(), value()}