nim-eth/eth/async_utils.nim

23 lines
570 B
Nim
Raw Normal View History

import
chronos, chronicles, chronicles/chronos_tools
2019-04-05 08:13:22 +00:00
export
chronos_tools
2020-06-17 16:14:05 +00:00
template awaitWithTimeout*[T](operation: Future[T],
deadline: Future[void],
onTimeout: untyped): T =
let f = operation
await f or deadline
if not f.finished:
cancel f
onTimeout
else:
f.read
template awaitWithTimeout*[T](operation: Future[T],
timeout: Duration,
onTimeout: untyped): T =
awaitWithTimeout(operation, sleepAsync(timeout), onTimeout)