syndicate-nim/src/syndicate/protocols/timer.nim

25 lines
616 B
Nim
Raw Normal View History

import
std/typetraits, preserves
type
2022-12-08 08:15:01 +00:00
TimerExpired* {.preservesRecord: "timer-expired".} = object
`label`*: Preserve[void]
`msecs`*: float64
2022-12-08 08:15:01 +00:00
SetTimer* {.preservesRecord: "set-timer".} = object
`label`*: Preserve[void]
`msecs`*: float64
2021-09-24 19:25:47 +00:00
`kind`*: TimerKind
`TimerKind`* {.preservesOr, pure.} = enum
`relative`, `absolute`, `clear`
2021-09-24 19:25:47 +00:00
LaterThan* {.preservesRecord: "later-than".} = object
`msecs`*: float64
2022-12-08 08:15:01 +00:00
proc `$`*(x: TimerExpired | SetTimer | LaterThan): string =
2021-09-24 19:25:47 +00:00
`$`(toPreserve(x))
2022-12-08 08:15:01 +00:00
proc encode*(x: TimerExpired | SetTimer | LaterThan): seq[byte] =
2021-09-24 19:25:47 +00:00
encode(toPreserve(x))