http-driver: update from syndicate-nim
This commit is contained in:
parent
d76f1df350
commit
8452d5811e
14
config.prs
14
config.prs
|
@ -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
|
||||||
}>.
|
}>.
|
||||||
|
|
14
sbom.json
14
sbom.json
|
@ -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",
|
||||||
|
|
|
@ -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 |
|
||||||
|
|
|
@ -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):
|
||||||
|
let pat = Resolve?:{ 0: HttpDriverStep.dropType }
|
||||||
|
during(turn, relay, pat):
|
||||||
|
let ds = turn.newDataspace()
|
||||||
http_driver.spawnHttpDriver(turn, ds)
|
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)
|
||||||
|
|
Loading…
Reference in New Issue