From 3a04fc195b60fc6ffadd9325b412e0dd41e0568a Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Fri, 13 Oct 2023 23:36:34 +0100 Subject: [PATCH] relays: add resolve proc --- src/syndicate/relays.nim | 15 +++++++++++++++ syndicate.nimble | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/syndicate/relays.nim b/src/syndicate/relays.nim index e84362f..3e19d10 100644 --- a/src/syndicate/relays.nim +++ b/src/syndicate/relays.nim @@ -416,3 +416,18 @@ when defined(posix): dispatch(relay, pr) asyncStdin.read(stdinReadSize).addCallback(readCb) asyncStdin.read(stdinReadSize).addCallback(readCb) + +type BootProc* = proc (turn: var Turn; ds: Cap) {.gcsafe.} + +proc resolve*(turn: var Turn; route: Route; bootProc: BootProc) = + var + unix: Unix + tcp: Tcp + if route.transports.len != 1 or route.pathSteps.len != 1: + raise newException(ValueError, "only a single transport and step supported for routes") + if unix.fromPreserve route.transports[0]: + connect(turn, unix, route.pathSteps[0], bootProc) + elif tcp.fromPreserve route.transports[0]: + connect(turn, tcp, route.pathSteps[0], bootProc) + else: + raise newException(ValueError, "unsupported route") diff --git a/syndicate.nimble b/syndicate.nimble index e82f07c..9ab8184 100644 --- a/syndicate.nimble +++ b/syndicate.nimble @@ -1,6 +1,6 @@ # Package -version = "20231005" +version = "20231013" author = "Emery Hemingway" description = "Syndicated actors for conversational concurrency" license = "Unlicense"