MingaEditor.Effect.Outcome (Minga v0.1.0)

Copy Markdown View Source

Lifecycle or terminal outcome for an admitted slow effect.

queued and running are lifecycle feedback. canceled, failed, stale, and completed are terminal. Domain handlers may reclassify a completed worker result as stale while atomically applying it to current editor state.

Summary

Functions

Builds a canceled terminal candidate.

Builds a completed terminal candidate.

Builds a failed terminal candidate.

Builds a queued lifecycle outcome with scheduler-authored queue metadata.

Builds a running lifecycle outcome.

Reclassifies an outcome as stale after domain-owned application.

Returns whether the outcome is terminal.

Types

lifecycle_status()

@type lifecycle_status() :: :queued | :running

status()

@type status() :: lifecycle_status() | terminal_status()

t()

@type t() :: %MingaEditor.Effect.Outcome{
  queue_position: pos_integer() | nil,
  queue_total: pos_integer() | nil,
  reason: term() | nil,
  request: MingaEditor.Effect.Request.t(),
  result: term() | nil,
  status: status()
}

terminal_status()

@type terminal_status() :: :canceled | :failed | :stale | :completed

Functions

canceled(request, reason)

@spec canceled(MingaEditor.Effect.Request.t(), term()) :: t()

Builds a canceled terminal candidate.

completed(request, result)

@spec completed(MingaEditor.Effect.Request.t(), term()) :: t()

Builds a completed terminal candidate.

failed(request, reason)

@spec failed(MingaEditor.Effect.Request.t(), term()) :: t()

Builds a failed terminal candidate.

queued(request, position, total)

Builds a queued lifecycle outcome with scheduler-authored queue metadata.

running(request)

@spec running(MingaEditor.Effect.Request.t()) :: t()

Builds a running lifecycle outcome.

stale(outcome, reason)

@spec stale(t(), term()) :: t()

Reclassifies an outcome as stale after domain-owned application.

terminal?(outcome)

@spec terminal?(t()) :: boolean()

Returns whether the outcome is terminal.