Add addCallback variant that passes on the value of a Future

This commit is contained in:
Emery Hemingway 2023-07-12 15:15:39 +01:00
parent 170f49693c
commit b1b0477b8a
2 changed files with 8 additions and 1 deletions

View File

@ -470,6 +470,13 @@ proc addCallback*(fut: FutureBase; turn: var Turn; act: TurnAction) =
else:
addCallback(fut, turn.facet, act)
proc addCallback*[T](fut: Future[T]; turn: var Turn; act: proc (t: var Turn, x: T) {.gcsafe.}) =
addCallback(fut) do ():
if fut.failed: terminate(facet.facet, fut.error)
else:
run(facet) do (turn: var Turn):
act(turn, read fut)
proc stop*(turn: var Turn, facet: Facet) =
enqueue(turn, facet.parent.get) do (turn: var Turn):
facet.terminate(turn, true)

View File

@ -1,6 +1,6 @@
# Package
version = "20230630"
version = "20230712"
author = "Emery Hemingway"
description = "Syndicated actors for conversational concurrency"
license = "Unlicense"