pub enum TimerAction {
Resume(PendingActivation, Region),
TriggerEvent(StateCellId),
}Expand description
What a fired TimerEntry actually does (B-sched Task 6, ledger
SC-069). Originally TimerEntry carried only {activation, region} –
“resume this activation” – which had no way to express “trigger this
named event” at all: an ->>#5 my_event; (a delayed nonblocking event
trigger, LRM 10.6.3) needs a wheel entry whose fired action wakes every
@(my_event) waiter, never resumes any particular process’s own
continuation directly (there may be no continuation to resume at all –
the triggering process, if ->>’s enclosing statement has already
returned control, might not even still exist as a live activation by the
time this fires).
Variants§
Resume(PendingActivation, Region)
The original, only-ever-constructed-until-now shape: resume
activation in region (region is almost always Region::Active;
it exists so a Suspend::Delay(0) can be represented uniformly even
though TimeWheel::arm_delay’s zero-delay case never actually
constructs one – it redirects to Region::Inactive before the wheel
is touched at all).
TriggerEvent(StateCellId)
SC-069: fire the named-event trigger at StateCellId – fans out
through the exact same ValueChangeSink::notify_change path an
ordinary committed write already uses (Engine::advance_time_to,
called with EdgeKind::None, the sentinel SensitivityTable::matches
already treats as “any change”/a trigger pulse), never conflated with
resuming whoever originally armed the trigger.