From 8ebde104caa701fdacb5769e9f266fe8a6e4d788 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Fri, 19 Apr 2024 10:51:40 +0200 Subject: [PATCH 1/3] http: order absent fields first This makes the absent variants the default initialization for some implementations. --- schemas/http.prs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/schemas/http.prs b/schemas/http.prs index 236a477..a81bd34 100644 --- a/schemas/http.prs +++ b/schemas/http.prs @@ -31,8 +31,8 @@ HttpRequest = . -RequestBody = @present bytes / @absent #f . -RequestHost = @present string / @absent #f . +RequestBody = @absent #f / @present bytes . +RequestHost = @absent #f / @present string . # Assertion to handler entity HttpContext = . From 6e555c9fd583d14a95743be4d08ef05a3ed73a82 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 19 Apr 2024 12:57:14 +0200 Subject: [PATCH 2/3] Update binary schemas --- schema-bundle.bin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/schema-bundle.bin b/schema-bundle.bin index 80b410e..1e6dd53 100644 --- a/schema-bundle.bin +++ b/schema-bundle.bin @@ -3,8 +3,8 @@ tcp-remote ByteString„„„„³Headers“³dictof“³atom³Symbol„“³atom³String„„³MimeType“³atom³Symbol„³ QueryValue“³orµµ±string“³atom³String„„µ±file“³rec“³lit³file„“³tupleµ“³named³filename“³atom³String„„“³named³headers“³refµ„³Headers„„“³named³body“³atom³ ByteString„„„„„„„„³ HostPattern“³orµµ±host“³atom³String„„µ±any“³lit€„„„„³ HttpBinding“³rec“³lit³ http-bind„“³tupleµ“³named³host“³refµ„³ HostPattern„„“³named³port“³atom³ SignedInteger„„“³named³method“³refµ„³ MethodPattern„„“³named³path“³refµ„³ PathPattern„„“³named³handler“³embedded“³refµ„³ HttpRequest„„„„„„³ HttpContext“³rec“³lit³request„“³tupleµ“³named³req“³refµ„³ HttpRequest„„“³named³res“³embedded“³refµ„³ HttpResponse„„„„„„³ HttpRequest“³rec“³lit³ http-request„“³tupleµ“³named³sequenceNumber“³atom³ SignedInteger„„“³named³host“³refµ„³ RequestHost„„“³named³port“³atom³ SignedInteger„„“³named³method“³atom³Symbol„„“³named³path“³seqof“³atom³String„„„“³named³headers“³refµ„³Headers„„“³named³query“³dictof“³atom³Symbol„“³seqof“³refµ„³ -QueryValue„„„„“³named³body“³refµ„³ RequestBody„„„„„³ HttpService“³rec“³lit³ http-service„“³tupleµ“³named³host“³refµ„³ HostPattern„„“³named³port“³atom³ SignedInteger„„“³named³method“³refµ„³ MethodPattern„„“³named³path“³refµ„³ PathPattern„„„„„³ PathPattern“³seqof“³refµ„³PathPatternElement„„³ RequestBody“³orµµ±present“³atom³ -ByteString„„µ±absent“³lit€„„„„³ RequestHost“³orµµ±present“³atom³String„„µ±absent“³lit€„„„„³ HttpListener“³rec“³lit³ http-listener„“³tupleµ“³named³port“³atom³ SignedInteger„„„„„³ HttpResponse“³orµµ±status“³rec“³lit³status„“³tupleµ“³named³code“³atom³ SignedInteger„„“³named³message“³atom³String„„„„„„µ±header“³rec“³lit³header„“³tupleµ“³named³name“³atom³Symbol„„“³named³value“³atom³String„„„„„„µ±chunk“³rec“³lit³chunk„“³tupleµ“³named³chunk“³refµ„³Chunk„„„„„„µ±done“³rec“³lit³done„“³tupleµ“³named³chunk“³refµ„³Chunk„„„„„„„„³ MethodPattern“³orµµ±any“³lit€„„µ±specific“³atom³Symbol„„„„³PathPatternElement“³orµµ±label“³atom³String„„µ±wildcard“³lit³_„„µ±rest“³lit³...„„„„„³ embeddedType€„„µ³noise„“³schema·³version°³ definitions·³Packet“³orµµ±complete“³atom³ +QueryValue„„„„“³named³body“³refµ„³ RequestBody„„„„„³ HttpService“³rec“³lit³ http-service„“³tupleµ“³named³host“³refµ„³ HostPattern„„“³named³port“³atom³ SignedInteger„„“³named³method“³refµ„³ MethodPattern„„“³named³path“³refµ„³ PathPattern„„„„„³ PathPattern“³seqof“³refµ„³PathPatternElement„„³ RequestBody“³orµµ±absent“³lit€„„µ±present“³atom³ +ByteString„„„„³ RequestHost“³orµµ±absent“³lit€„„µ±present“³atom³String„„„„³ HttpListener“³rec“³lit³ http-listener„“³tupleµ“³named³port“³atom³ SignedInteger„„„„„³ HttpResponse“³orµµ±status“³rec“³lit³status„“³tupleµ“³named³code“³atom³ SignedInteger„„“³named³message“³atom³String„„„„„„µ±header“³rec“³lit³header„“³tupleµ“³named³name“³atom³Symbol„„“³named³value“³atom³String„„„„„„µ±chunk“³rec“³lit³chunk„“³tupleµ“³named³chunk“³refµ„³Chunk„„„„„„µ±done“³rec“³lit³done„“³tupleµ“³named³chunk“³refµ„³Chunk„„„„„„„„³ MethodPattern“³orµµ±any“³lit€„„µ±specific“³atom³Symbol„„„„³PathPatternElement“³orµµ±label“³atom³String„„µ±wildcard“³lit³_„„µ±rest“³lit³...„„„„„³ embeddedType€„„µ³noise„“³schema·³version°³ definitions·³Packet“³orµµ±complete“³atom³ ByteString„„µ± fragmented“³seqof“³atom³ ByteString„„„„„³ Initiator“³rec“³lit³ initiator„“³tupleµ“³named³initiatorSession“³embedded“³refµ„³Packet„„„„„„³ NoiseSpec“³andµ“³dict·³key“³named³key“³atom³ From 599b4ed4697fb3d462381e69be576c985020cd16 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Sun, 19 May 2024 21:32:44 +0200 Subject: [PATCH 3/3] Packet::Nop --- schema-bundle.bin | 2 +- schemas/protocol.prs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/schema-bundle.bin b/schema-bundle.bin index 1e6dd53..b207960 100644 --- a/schema-bundle.bin +++ b/schema-bundle.bin @@ -38,7 +38,7 @@ Parameters Parameters„³SturdyDescriptionDetail“³dict·³key“³named³key“³atom³ ByteString„„³oid“³named³oid³any„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³worker„“³schema·³version°³ definitions·³Instance“³rec“³lit³Instance„“³tupleµ“³named³name“³atom³String„„“³named³argument³any„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³service„“³schema·³version°³ definitions·³State“³orµµ±started“³lit³started„„µ±ready“³lit³ready„„µ±failed“³lit³failed„„µ±complete“³lit³complete„„µ± userDefined³any„„„³ RunService“³rec“³lit³ run-service„“³tupleµ“³named³ serviceName³any„„„„³ ServiceState“³rec“³lit³ service-state„“³tupleµ“³named³ serviceName³any„“³named³state“³refµ„³State„„„„„³ ServiceObject“³rec“³lit³service-object„“³tupleµ“³named³ serviceName³any„“³named³object³any„„„„³RequireService“³rec“³lit³require-service„“³tupleµ“³named³ serviceName³any„„„„³RestartService“³rec“³lit³restart-service„“³tupleµ“³named³ serviceName³any„„„„³ServiceDependency“³rec“³lit³ -depends-on„“³tupleµ“³named³depender³any„“³named³dependee“³refµ„³ ServiceState„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³protocol„“³schema·³version°³ definitions·³Oid“³atom³ SignedInteger„³Sync“³rec“³lit³S„“³tupleµ“³named³peer“³embedded“³lit„„„„„„³Turn“³seqof“³refµ„³ TurnEvent„„³Error“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„“³named³detail³any„„„„³Event“³orµµ±Assert“³refµ„³Assert„„µ±Retract“³refµ„³Retract„„µ±Message“³refµ„³Message„„µ±Sync“³refµ„³Sync„„„„³Assert“³rec“³lit³A„“³tupleµ“³named³ assertion“³refµ„³ Assertion„„“³named³handle“³refµ„³Handle„„„„„³Handle“³atom³ SignedInteger„³Packet“³orµµ±Turn“³refµ„³Turn„„µ±Error“³refµ„³Error„„µ± Extension“³refµ„³ Extension„„„„³Message“³rec“³lit³M„“³tupleµ“³named³body“³refµ„³ Assertion„„„„„³Retract“³rec“³lit³R„“³tupleµ“³named³handle“³refµ„³Handle„„„„„³ Assertion³any³ Extension“³rec“³named³label³any„“³named³fields“³seqof³any„„„³ TurnEvent“³tupleµ“³named³oid“³refµ„³Oid„„“³named³event“³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„“³schema·³version°³ definitions·³Observe“³rec“³lit³Observe„“³tupleµ“³named³pattern“³refµ³dataspacePatterns„³Pattern„„“³named³observer“³embedded³any„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³ +depends-on„“³tupleµ“³named³depender³any„“³named³dependee“³refµ„³ ServiceState„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³protocol„“³schema·³version°³ definitions·³Nop“³lit€„³Oid“³atom³ SignedInteger„³Sync“³rec“³lit³S„“³tupleµ“³named³peer“³embedded“³lit„„„„„„³Turn“³seqof“³refµ„³ TurnEvent„„³Error“³rec“³lit³error„“³tupleµ“³named³message“³atom³String„„“³named³detail³any„„„„³Event“³orµµ±Assert“³refµ„³Assert„„µ±Retract“³refµ„³Retract„„µ±Message“³refµ„³Message„„µ±Sync“³refµ„³Sync„„„„³Assert“³rec“³lit³A„“³tupleµ“³named³ assertion“³refµ„³ Assertion„„“³named³handle“³refµ„³Handle„„„„„³Handle“³atom³ SignedInteger„³Packet“³orµµ±Turn“³refµ„³Turn„„µ±Error“³refµ„³Error„„µ± Extension“³refµ„³ Extension„„µ±Nop“³refµ„³Nop„„„„³Message“³rec“³lit³M„“³tupleµ“³named³body“³refµ„³ Assertion„„„„„³Retract“³rec“³lit³R„“³tupleµ“³named³handle“³refµ„³Handle„„„„„³ Assertion³any³ Extension“³rec“³named³label³any„“³named³fields“³seqof³any„„„³ TurnEvent“³tupleµ“³named³oid“³refµ„³Oid„„“³named³event“³refµ„³Event„„„„„³ embeddedType€„„µ³ dataspace„“³schema·³version°³ definitions·³Observe“³rec“³lit³Observe„“³tupleµ“³named³pattern“³refµ³dataspacePatterns„³Pattern„„“³named³observer“³embedded³any„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³ gatekeeper„“³schema·³version°³ definitions·³Bind“³rec“³lit³bind„“³tupleµ“³named³ description“³refµ„³ Description„„“³named³target“³embedded³any„„“³named³observer“³refµ„³ BindObserver„„„„„³Step“³rec“³named³stepType“³atom³Symbol„„“³tupleµ“³named³detail³any„„„„³Bound“³orµµ±bound“³rec“³lit³bound„“³tupleµ“³named³pathStep“³refµ„³PathStep„„„„„„µ±Rejected“³refµ„³Rejected„„„„³Route“³rec“³lit³route„“³ tuplePrefixµ“³named³ transports“³seqof³any„„„“³named³ pathSteps“³seqof“³refµ„³PathStep„„„„„³Resolve“³rec“³lit³resolve„“³tupleµ“³named³step“³refµ„³Step„„“³named³observer“³embedded“³refµ„³Resolved„„„„„„³PathStep“³rec“³named³stepType“³atom³Symbol„„“³tupleµ“³named³detail³any„„„„³Rejected“³rec“³lit³rejected„“³tupleµ“³named³detail³any„„„„³Resolved“³orµµ±accepted“³rec“³lit³accepted„“³tupleµ“³named³responderSession“³embedded³any„„„„„„µ±Rejected“³refµ„³Rejected„„„„³ Description“³rec“³named³stepType“³atom³Symbol„„“³tupleµ“³named³detail³any„„„„³ ResolvePath“³rec“³lit³ resolve-path„“³tupleµ“³named³route“³refµ„³Route„„“³named³addr³any„“³named³control“³embedded“³refµ„³TransportControl„„„“³named³resolved“³refµ„³Resolved„„„„„³ BindObserver“³orµµ±present“³embedded“³refµ„³Bound„„„µ±absent“³lit€„„„„³ForceDisconnect“³rec“³lit³force-disconnect„“³tupleµ„„„³ResolvedPathStep“³rec“³lit³ path-step„“³tupleµ“³named³origin“³embedded“³refµ„³Resolve„„„“³named³pathStep“³refµ„³PathStep„„“³named³resolved“³refµ„³Resolved„„„„„³TransportControl“³refµ„³ForceDisconnect„³TransportConnection“³rec“³lit³connect-transport„“³tupleµ“³named³addr³any„“³named³control“³embedded“³refµ„³TransportControl„„„“³named³resolved“³refµ„³Resolved„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„µ³transportAddress„“³schema·³version°³ definitions·³Tcp“³rec“³lit³tcp„“³tupleµ“³named³host“³atom³String„„“³named³port“³atom³ SignedInteger„„„„„³Unix“³rec“³lit³unix„“³tupleµ“³named³path“³atom³String„„„„„³Stdio“³rec“³lit³stdio„“³tupleµ„„„³ WebSocket“³rec“³lit³ws„“³tupleµ“³named³url“³atom³String„„„„„„³ embeddedType€„„µ³dataspacePatterns„“³schema·³version°³ definitions·³AnyAtom“³orµµ±bool“³atom³Boolean„„µ±double“³atom³Double„„µ±int“³atom³ SignedInteger„„µ±string“³atom³String„„µ±bytes“³atom³ ByteString„„µ±symbol“³atom³Symbol„„µ±embedded“³embedded³any„„„„³Pattern“³orµµ±discard“³rec“³lit³_„“³tupleµ„„„„µ±bind“³rec“³lit³bind„“³tupleµ“³named³pattern“³refµ„³Pattern„„„„„„µ±lit“³rec“³lit³lit„“³tupleµ“³named³value“³refµ„³AnyAtom„„„„„„µ±group“³rec“³lit³group„“³tupleµ“³named³type“³refµ„³ GroupType„„“³named³entries“³dictof³any“³refµ„³Pattern„„„„„„„„„³ GroupType“³orµµ±rec“³rec“³lit³rec„“³tupleµ“³named³label³any„„„„„µ±arr“³rec“³lit³arr„“³tupleµ„„„„µ±dict“³rec“³lit³dict„“³tupleµ„„„„„„„³ embeddedType“³refµ³ EntityRef„³Cap„„„„„ \ No newline at end of file diff --git a/schemas/protocol.prs b/schemas/protocol.prs index da66672..a533fee 100644 --- a/schemas/protocol.prs +++ b/schemas/protocol.prs @@ -1,8 +1,9 @@ version 1 . -Packet = Turn / Error / Extension . +Packet = Turn / Error / Extension / Nop . Extension = < @label any @fields [any ...]> . +Nop = #f . Error = .