BeamConsole.Lifecycle.Recorder.State (beam_console v0.5.3)

Copy Markdown View Source

Carries bounded lifecycle-recorder state across mailbox transitions.

PID-bearing watch and pending-exit maps remain private. Public status and queries are derived into safe scalar and retained-event values.

Summary

Types

clock()

@type clock() :: (-> integer())

refresh_request()

@type refresh_request() :: %{
  pid: pid(),
  monitor_ref: reference(),
  timeout_ref: reference(),
  outcome: :ok | :error | nil,
  timed_out?: boolean(),
  cancelled?: boolean()
}

refresh_requester()

@type refresh_requester() :: (-> term()) | nil

t()

@type t() :: %BeamConsole.Lifecycle.Recorder.State{
  active?: boolean(),
  config: BeamConsole.Recorder.Config.t(),
  deferred: non_neg_integer(),
  demanded?: boolean(),
  eligible: non_neg_integer(),
  flush_scheduled?: boolean(),
  history: BeamConsole.Recorder.History.t(),
  missed_reconciliations: non_neg_integer(),
  monotonic_clock: clock(),
  omitted: non_neg_integer(),
  paused?: boolean(),
  pending_events: [BeamConsole.Lifecycle.Event.t()],
  pending_exits: %{
    required(String.t()) => BeamConsole.Lifecycle.PendingExit.t()
  },
  reconcile_scheduled?: boolean(),
  recording_control: GenServer.server() | nil,
  recording_revision: non_neg_integer(),
  recording_started_at_ms: integer() | nil,
  recording_started_monotonic_ms: integer() | nil,
  refresh_pending?: boolean(),
  refresh_request: refresh_request() | nil,
  refresh_requester: refresh_requester(),
  refresh_timeout: pos_integer(),
  reset_pending?: boolean(),
  source_epoch: String.t() | nil,
  start_event_pending?: boolean(),
  system_clock: clock(),
  watches_by_pid: %{required(pid()) => BeamConsole.Lifecycle.Watch.t()},
  watches_by_ref: %{required(reference()) => pid()}
}