Statifier.Effect.SendDelayed (Statifier v2.0.0)

Copy Markdown View Source

Payload for {:send_delayed, %__MODULE__{}} - spec 6.2's <send> when delay/delayexpr is present. Carries every field Statifier.Effect.Send does, plus delay_ms, the resolved delay in milliseconds. The timer that fires this send is Statifier.Session's to schedule; this module only defines the shape it schedules.

c_index identifies the <send> content node (constraint 3, never a compiled content-node struct); owner names which block emitted the send (the same gap Statifier.Effect.Log's own moduledoc describes for c_index alone). macrostep/microstep/round are the counters as they stood when the send was scheduled, not when the timer fires.

id_from_author? is true when the document wrote id or idlocation on this <send>, false when send_id was generated - the same C.1 empty-sendid flag Statifier.Effect.Send's own moduledoc explains.

ordinal is a per-execution sequence number minted from Statifier.MachineState's session-global timer_counter (ADR-0059). It is what makes a durable host's dedup key per-instance where the counter triple and the content position cannot - two iterations of a <foreach> body execute the same content node, in the same microstep, under the same author-written id, and only ordinal tells them apart. It replays identically because the counter is pure fold state.

caller_context is the opaque host term the current macrostep's triggering external event carried (ADR-0063), copied off Statifier.MachineState's transient slot at construction - nil when no context was attached. A durable store carries it as row data beside the key components (never a key component itself, ADR-0063 decision 6) and restores it at firing time so the firing site can attribute back to the scheduling trace. The library never reads the value.

Summary

Types

Which block emitted the send - Statifier.Machine.Content.owner/0.

t()

Types

owner()

@type owner() :: Statifier.Machine.Content.owner()

Which block emitted the send - Statifier.Machine.Content.owner/0.

t()

@type t() :: %Statifier.Effect.SendDelayed{
  c_index: non_neg_integer() | nil,
  caller_context: term(),
  data: term(),
  delay_ms: non_neg_integer(),
  event: String.t(),
  id_from_author?: boolean(),
  macrostep: non_neg_integer(),
  microstep: non_neg_integer(),
  ordinal: pos_integer(),
  owner: owner() | nil,
  round: non_neg_integer(),
  send_id: String.t() | nil,
  target: String.t() | nil,
  type: String.t() | nil
}