diff options
| author | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 11:07:37 +0200 |
|---|---|---|
| committer | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 11:07:37 +0200 |
| commit | 298d76ad4b5841f3b2482fd8f3b320af7f7b915a (patch) | |
| tree | 16255025141bfae91658ee435f5fc8f27f4342e4 /lua | |
| parent | 8a86e09e8ff40cf45e948562324a47378751690f (diff) | |
Store repeat timestamp
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/clever_f/repeat_resolver.lua | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lua/clever_f/repeat_resolver.lua b/lua/clever_f/repeat_resolver.lua index 4155df9..5368c49 100644 --- a/lua/clever_f/repeat_resolver.lua +++ b/lua/clever_f/repeat_resolver.lua @@ -1,5 +1,6 @@ local domain = require("clever_f.domain") local sequence_state = require("clever_f.sequence_state") +local state_transitions = require("clever_f.state_transitions") local M = {} local RepeatResolver = {} @@ -43,6 +44,16 @@ local function require_clock(clock) return clock end +local function require_transitions(transitions, state) + transitions = transitions or state_transitions.new(state) + if type(transitions) ~= "table" + or type(transitions.SetRepeatTimestamp) ~= "function" + then + fail("RepeatResolver transitions must set repeat timestamp", 3) + end + return transitions +end + local function finite_time(value) return type(value) == "number" and value == value @@ -93,6 +104,10 @@ function RepeatResolver.new(options) clock = require_clock(options.clock or options.time_provider or options.host), policy = require_policy(options.policy or options.policy_service), state = state, + transitions = require_transitions( + options.transitions or options.state_transitions, + state + ), } return resolver end @@ -150,7 +165,9 @@ function RepeatResolver:evaluate_timeout() if not finite_time(current_time) then fail("repeat clock must return finite milliseconds", 2) end - local elapsed_ms = current_time - resolver_records[self].state.repeat_timestamp_ms + local record = resolver_records[self] + local elapsed_ms = current_time - record.state.repeat_timestamp_ms + record.transitions:SetRepeatTimestamp(current_time) return nil, M.truncate_elapsed_ms(elapsed_ms) end |
