From de52e08a23c2e982068e2fac4e91357710a883d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 1 Oct 2024 18:47:22 +0200 Subject: [PATCH] =?UTF-8?q?timer-wheel:=20Add=20=E2=80=98timer-wheel-remov?= =?UTF-8?q?e!=E2=80=99.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fibers/timer-wheel.scm (timer-wheel-remove!): New procedure. --- fibers/timer-wheel.scm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/fibers/timer-wheel.scm b/fibers/timer-wheel.scm index 5ca37ea..de98918 100644 --- a/fibers/timer-wheel.scm +++ b/fibers/timer-wheel.scm @@ -31,6 +31,7 @@ #:use-module (ice-9 format) #:export (make-timer-wheel timer-wheel-add! + timer-wheel-remove! timer-wheel-next-entry-time timer-wheel-next-tick-start timer-wheel-next-tick-end @@ -141,6 +142,18 @@ (else (timer-wheel-add! (or outer (add-outer-wheel! wheel)) t obj))))))) +(define (timer-wheel-remove! wheel entry) + "Remove @var{entry}, a timer entry as returned by @code{timer-wheel-add!}, +from @var{wheel}." + (match entry + (($ prev next) + (when prev + (set-timer-entry-next! prev next) + (set-timer-entry-prev! entry #f)) + (when next + (set-timer-entry-prev! next prev) + (set-timer-entry-next! entry #f))))) + (define (timer-wheel-next-entry-time wheel) (define (slot-min-time head) (let lp ((entry (timer-entry-next head)) (min #f))