simplify asyncfutures, asyncmacro (#17633)
This commit is contained in:
parent
56c37759d6
commit
d6242d7fe1
5 changed files with 62 additions and 92 deletions
|
|
@ -189,24 +189,22 @@ proc add(callbacks: var CallbackList, function: CallbackFunc) =
|
|||
last = last.next
|
||||
last.next = newCallback
|
||||
|
||||
proc complete*[T](future: Future[T], val: T) =
|
||||
## Completes `future` with value `val`.
|
||||
proc completeImpl[T, U](future: Future[T], val: U, isVoid: static bool) =
|
||||
#assert(not future.finished, "Future already finished, cannot finish twice.")
|
||||
checkFinished(future)
|
||||
assert(future.error == nil)
|
||||
future.value = val
|
||||
when not isVoid:
|
||||
future.value = val
|
||||
future.finished = true
|
||||
future.callbacks.call()
|
||||
when isFutureLoggingEnabled: logFutureFinish(future)
|
||||
|
||||
proc complete*(future: Future[void]) =
|
||||
## Completes a void `future`.
|
||||
#assert(not future.finished, "Future already finished, cannot finish twice.")
|
||||
checkFinished(future)
|
||||
assert(future.error == nil)
|
||||
future.finished = true
|
||||
future.callbacks.call()
|
||||
when isFutureLoggingEnabled: logFutureFinish(future)
|
||||
proc complete*[T](future: Future[T], val: T) =
|
||||
## Completes `future` with value `val`.
|
||||
completeImpl(future, val, false)
|
||||
|
||||
proc complete*(future: Future[void], val = Future[void].default) =
|
||||
completeImpl(future, (), true)
|
||||
|
||||
proc complete*[T](future: FutureVar[T]) =
|
||||
## Completes a `FutureVar`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue