49 lines
1.3 KiB
Racket
49 lines
1.3 KiB
Racket
#lang scribble/doc
|
|
@(require "web-server.ss")
|
|
|
|
@title[#:tag "timer.ss"]{Timers}
|
|
@(require (for-label web-server/private/timer))
|
|
|
|
@defmodule[web-server/private/timer]{
|
|
|
|
This module provides a functionality for running
|
|
procedures after a given amount of time, that may be extended.
|
|
|
|
@defstruct[timer ([evt evt?]
|
|
[expire-seconds number?]
|
|
[action (-> void)])]{
|
|
@scheme[evt] is an @scheme[alarm-evt] that is ready at @scheme[expire-seconds].
|
|
@scheme[action] should be called when this @scheme[evt] is ready.
|
|
}
|
|
|
|
@defproc[(start-timer-manager)
|
|
void]{
|
|
Handles the execution and management of timers.
|
|
}
|
|
|
|
@defproc[(start-timer [s number?]
|
|
[action (-> void)])
|
|
timer?]{
|
|
Registers a timer that runs @scheme[action] after @scheme[s] seconds.
|
|
}
|
|
|
|
@defproc[(reset-timer! [t timer?]
|
|
[s number?])
|
|
void]{
|
|
Changes @scheme[t] so that it will fire after @scheme[s] seconds.
|
|
}
|
|
|
|
@defproc[(increment-timer! [t timer?]
|
|
[s number?])
|
|
void]{
|
|
Changes @scheme[t] so that it will fire after @scheme[s] seconds from when
|
|
it does now.
|
|
}
|
|
|
|
@defproc[(cancel-timer! [t timer?])
|
|
void]{
|
|
Cancels the firing of @scheme[t] ever and frees resources used by @scheme[t].
|
|
}
|
|
|
|
}
|