Runbox.StateStore.Entity (runbox v1.3.0)

Module defines struct which acts as state store envelope for any stateful runtime component.

Link to this section Summary

Functions

Confirm that all messages with lower timestamps were processed.

Returns entity id

Creates new state store entity

Returns entity schedule

Returns entity state

Returns entity timestamp

Set entity state at the specified point in time.

Link to this section Types

@type id() :: String.t() | atom()
@type state() :: term()
@type t() :: %Runbox.StateStore.Entity{
  id: id(),
  last_savepoint: Runbox.StateStore.ScheduleUtils.epoch_ms(),
  next_savepoint: Runbox.StateStore.ScheduleUtils.epoch_ms(),
  run_id: String.t(),
  schedule: Runbox.StateStore.ScheduleUtils.schedule(),
  state: state(),
  timestamp: Runbox.StateStore.ScheduleUtils.epoch_ms()
}

Link to this section Functions

Link to this function

ack_processed_time(entity, timestamp, save_mfa)

@spec ack_processed_time(
  t(),
  Runbox.StateStore.ScheduleUtils.epoch_ms(),
  {module(), atom(), list()}
) ::
  {:ok, t()} | {:error, term()}

Confirm that all messages with lower timestamps were processed.

When the timestamp is higher than next savepoint the state is persisted into StateStore with StateStore.save/4 and next savepoint target is determined and stored in the entity. The state is persisted only once per every savepoint.

@spec id(t()) :: id()

Returns entity id

Link to this function

new(run_id, id, schedule, timestamp, state)

Creates new state store entity

Link to this function

schedule(entity)

Returns entity schedule

@spec state(t()) :: state()

Returns entity state

Link to this function

timestamp(entity)

Returns entity timestamp

Link to this function

update_state(entity, timestamp, state)

@spec update_state(t(), Runbox.StateStore.ScheduleUtils.epoch_ms(), state()) :: t()

Set entity state at the specified point in time.