http-driver: update from syndicate-nim

This commit is contained in:
Emery Hemingway 2024-06-06 10:42:38 +03:00
parent d76f1df350
commit 8452d5811e
4 changed files with 42 additions and 63 deletions

View File

@ -28,9 +28,7 @@ HttpClientArguments = <http-client {
dataspace: #:any dataspace: #:any
}>. }>.
HttpDriverArguments = <http-driver { HttpDriverStep= <http-driver { }>.
dataspace: #:any
}>.
JsonSocketTranslatorStep = <json-socket-translator { JsonSocketTranslatorStep = <json-socket-translator {
socket: SocketAddress socket: SocketAddress
@ -51,16 +49,6 @@ SqliteStep = <sqlite {
database: string database: string
}>. }>.
WebhooksArguments = <webhooks {
endpoints: {[string ...]: #:any ...:...}
listen: Tcp
}>.
WebsocketArguments = <websocket {
dataspace: #:any
url: string
}>.
XmlTranslatorArguments = <xml-translator { XmlTranslatorArguments = <xml-translator {
dataspace: #:any dataspace: #:any
}>. }>.

View File

@ -7,7 +7,7 @@
"bom-ref": "pkg:nim/syndicate_utils", "bom-ref": "pkg:nim/syndicate_utils",
"name": "syndicate_utils", "name": "syndicate_utils",
"description": "Utilites for Syndicated Actors and Synit", "description": "Utilites for Syndicated Actors and Synit",
"version": "20240604", "version": "20240606",
"authors": [ "authors": [
{ {
"name": "Emery Hemingway" "name": "Emery Hemingway"
@ -89,7 +89,7 @@
"type": "library", "type": "library",
"bom-ref": "pkg:nim/syndicate", "bom-ref": "pkg:nim/syndicate",
"name": "syndicate", "name": "syndicate",
"version": "20240601", "version": "20240605",
"externalReferences": [ "externalReferences": [
{ {
"url": "https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/3a4dc1f13392830b587138199643d30fdbec8541.tar.gz", "url": "https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/3a4dc1f13392830b587138199643d30fdbec8541.tar.gz",
@ -107,23 +107,23 @@
}, },
{ {
"name": "nix:fod:path", "name": "nix:fod:path",
"value": "/nix/store/4a52kd569bvwl24j8acz0s0kc1l4aywi-source" "value": "/nix/store/s2k08r94gs3a6q6ybx3sk5rad78r7vcp-source"
}, },
{ {
"name": "nix:fod:rev", "name": "nix:fod:rev",
"value": "3a8e729e89df71063c186e28598b8a4ea9327028" "value": "24364187f22d8b09bccc645bfafe3a116f69f020"
}, },
{ {
"name": "nix:fod:sha256", "name": "nix:fod:sha256",
"value": "1imvx7dbncvsxkvl753xadw4zj63nb0y9w26km8i6n8qfaqb0cby" "value": "0150micmbv7ssh1n7361vjapylqnamfy57mlvxh761gnbighs7nr"
}, },
{ {
"name": "nix:fod:url", "name": "nix:fod:url",
"value": "https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/3a8e729e89df71063c186e28598b8a4ea9327028.tar.gz" "value": "https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/24364187f22d8b09bccc645bfafe3a116f69f020.tar.gz"
}, },
{ {
"name": "nix:fod:ref", "name": "nix:fod:ref",
"value": "20240601" "value": "20240605"
}, },
{ {
"name": "nix:fod:srcDir", "name": "nix:fod:srcDir",

View File

@ -1,15 +1,8 @@
import import
preserves, std/tables preserves
type type
WebsocketArgumentsField0* {.preservesDictionary.} = object
`dataspace`* {.preservesEmbedded.}: EmbeddedRef
`url`*: string
WebsocketArguments* {.preservesRecord: "websocket".} = object
`field0`*: WebsocketArgumentsField0
HttpClientArgumentsField0* {.preservesDictionary.} = object HttpClientArgumentsField0* {.preservesDictionary.} = object
`dataspace`* {.preservesEmbedded.}: EmbeddedRef `dataspace`* {.preservesEmbedded.}: EmbeddedRef
@ -52,31 +45,23 @@ type
XsltArguments* {.preservesRecord: "xslt".} = object XsltArguments* {.preservesRecord: "xslt".} = object
`field0`*: XsltArgumentsField0 `field0`*: XsltArgumentsField0
HttpDriverArgumentsField0* {.preservesDictionary.} = object
`dataspace`* {.preservesEmbedded.}: EmbeddedRef
HttpDriverArguments* {.preservesRecord: "http-driver".} = object
`field0`*: HttpDriverArgumentsField0
JsonSocketTranslatorStepField0* {.preservesDictionary.} = object JsonSocketTranslatorStepField0* {.preservesDictionary.} = object
`socket`*: SocketAddress `socket`*: SocketAddress
JsonSocketTranslatorStep* {.preservesRecord: "json-socket-translator".} = object JsonSocketTranslatorStep* {.preservesRecord: "json-socket-translator".} = object
`field0`*: JsonSocketTranslatorStepField0 `field0`*: JsonSocketTranslatorStepField0
WebhooksArgumentsField0* {.preservesDictionary.} = object
`endpoints`*: Table[seq[string], EmbeddedRef]
`listen`*: Tcp
WebhooksArguments* {.preservesRecord: "webhooks".} = object
`field0`*: WebhooksArgumentsField0
FileSystemUsageArgumentsField0* {.preservesDictionary.} = object FileSystemUsageArgumentsField0* {.preservesDictionary.} = object
`dataspace`* {.preservesEmbedded.}: EmbeddedRef `dataspace`* {.preservesEmbedded.}: EmbeddedRef
FileSystemUsageArguments* {.preservesRecord: "file-system-usage".} = object FileSystemUsageArguments* {.preservesRecord: "file-system-usage".} = object
`field0`*: FileSystemUsageArgumentsField0 `field0`*: FileSystemUsageArgumentsField0
HttpDriverStepField0* {.preservesDictionary.} = object
HttpDriverStep* {.preservesRecord: "http-driver".} = object
`field0`*: HttpDriverStepField0
PostgreStepField0* {.preservesDictionary.} = object PostgreStepField0* {.preservesDictionary.} = object
`connection`*: seq[PostgreConnectionParameter] `connection`*: seq[PostgreConnectionParameter]
@ -122,15 +107,13 @@ type
PrinterStep* {.preservesRecord: "printer".} = object PrinterStep* {.preservesRecord: "printer".} = object
`field0`*: PrinterStepField0 `field0`*: PrinterStepField0
proc `$`*(x: WebsocketArguments | HttpClientArguments | JsonTranslatorArguments | proc `$`*(x: HttpClientArguments | JsonTranslatorArguments | SocketAddress |
SocketAddress |
Base64DecoderArguments | Base64DecoderArguments |
SqliteStep | SqliteStep |
XsltArguments | XsltArguments |
HttpDriverArguments |
JsonSocketTranslatorStep | JsonSocketTranslatorStep |
WebhooksArguments |
FileSystemUsageArguments | FileSystemUsageArguments |
HttpDriverStep |
PostgreStep | PostgreStep |
TcpAddress | TcpAddress |
CacheArguments | CacheArguments |
@ -142,16 +125,13 @@ proc `$`*(x: WebsocketArguments | HttpClientArguments | JsonTranslatorArguments
PrinterStep): string = PrinterStep): string =
`$`(toPreserves(x)) `$`(toPreserves(x))
proc encode*(x: WebsocketArguments | HttpClientArguments | proc encode*(x: HttpClientArguments | JsonTranslatorArguments | SocketAddress |
JsonTranslatorArguments |
SocketAddress |
Base64DecoderArguments | Base64DecoderArguments |
SqliteStep | SqliteStep |
XsltArguments | XsltArguments |
HttpDriverArguments |
JsonSocketTranslatorStep | JsonSocketTranslatorStep |
WebhooksArguments |
FileSystemUsageArguments | FileSystemUsageArguments |
HttpDriverStep |
PostgreStep | PostgreStep |
TcpAddress | TcpAddress |
CacheArguments | CacheArguments |

View File

@ -3,15 +3,26 @@
## Thin wrapper over `syndicate/drivers/http_driver`. ## Thin wrapper over `syndicate/drivers/http_driver`.
import pkg/preserves, pkg/syndicate import
import pkg/syndicate/drivers/http_driver pkg/taps,
import pkg/taps pkg/preserves,
import ../schema/config pkg/syndicate,
pkg/syndicate/drivers/http_driver,
pkg/syndicate/protocols/[gatekeeper, sturdy],
../schema/config
proc spawnHttpDriver*(turn: Turn; ds: Cap): Actor {.discardable.}= proc spawnHttpDriver*(turn: Turn; relay: Cap): Actor {.discardable.} =
http_driver.spawnHttpDriver(turn, ds) ## Create a dataspace for the driver and to the gatekeeper dance.
during(turn, ds, ?:HttpDriverArguments) do (ds: Cap): spawnActor(turn, "http-driver") do (turn: Turn):
http_driver.spawnHttpDriver(turn, ds) let pat = Resolve?:{ 0: HttpDriverStep.dropType }
during(turn, relay, pat):
let ds = turn.newDataspace()
http_driver.spawnHttpDriver(turn, ds)
# Spawn a shared driver.
let pat = Resolve?:{ 0: HttpDriverStep.dropType, 1: grab() }
during(turn, relay, pat) do (obs: Cap):
discard publish(turn, obs, ResolvedAccepted(responderSession: ds))
# Pass the shared driver dataspace.
when isMainModule: when isMainModule:
import syndicate/relays import syndicate/relays
@ -31,12 +42,12 @@ when isMainModule:
quit("failed to parse command line for route to Syndicate gatekeeper") quit("failed to parse command line for route to Syndicate gatekeeper")
runActor("main") do (turn: Turn): runActor("main") do (turn: Turn):
let ds = newDataspace(turn) let relay = newDataspace(turn)
spawnRelays(turn, ds) spawnRelays(turn, relay)
resolve(turn, ds, envRoute(), spawnHttpDriver) resolve(turn, relay, envRoute(), spawnHttpDriver)
else: else:
runActor("main") do (turn: Turn): runActor("main") do (turn: Turn):
resolveEnvironment(turn) do (turn: Turn; ds: Cap): resolveEnvironment(turn) do (turn: Turn; relay: Cap):
spawnHttpDriver(turn, ds) spawnHttpDriver(turn, relay)