From b1b0477b8a1ca94fa30b859061a825034753a433 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Wed, 12 Jul 2023 15:15:39 +0100 Subject: [PATCH] Add addCallback variant that passes on the value of a Future --- src/syndicate/actors.nim | 7 +++++++ syndicate.nimble | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/syndicate/actors.nim b/src/syndicate/actors.nim index 170fc02..198d63a 100644 --- a/src/syndicate/actors.nim +++ b/src/syndicate/actors.nim @@ -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) diff --git a/syndicate.nimble b/syndicate.nimble index 13e0027..c33cd8a 100644 --- a/syndicate.nimble +++ b/syndicate.nimble @@ -1,6 +1,6 @@ # Package -version = "20230630" +version = "20230712" author = "Emery Hemingway" description = "Syndicated actors for conversational concurrency" license = "Unlicense"