25 lines
616 B
Nim
25 lines
616 B
Nim
|
|
import
|
|
std/typetraits, preserves
|
|
|
|
type
|
|
TimerExpired* {.preservesRecord: "timer-expired".} = object
|
|
`label`*: Preserve[void]
|
|
`msecs`*: float64
|
|
|
|
SetTimer* {.preservesRecord: "set-timer".} = object
|
|
`label`*: Preserve[void]
|
|
`msecs`*: float64
|
|
`kind`*: TimerKind
|
|
|
|
`TimerKind`* {.preservesOr, pure.} = enum
|
|
`relative`, `absolute`, `clear`
|
|
LaterThan* {.preservesRecord: "later-than".} = object
|
|
`msecs`*: float64
|
|
|
|
proc `$`*(x: TimerExpired | SetTimer | LaterThan): string =
|
|
`$`(toPreserve(x))
|
|
|
|
proc encode*(x: TimerExpired | SetTimer | LaterThan): seq[byte] =
|
|
encode(toPreserve(x))
|