syndicate-nim/src/sam/protocols/gatekeeper.nim

104 lines
2.7 KiB
Nim

import
preserves
type
Bind* {.preservesRecord: "bind".} = object
`description`*: Description
`target`* {.preservesEmbedded.}: EmbeddedRef
`observer`*: BindObserver
Route* {.preservesRecord: "route".} = object
`transports`*: seq[Value]
`pathSteps`* {.preservesTupleTail.}: seq[PathStep]
BindObserverKind* {.pure.} = enum
`present`, `absent`
`BindObserver`* {.preservesOr.} = object
case orKind*: BindObserverKind
of BindObserverKind.`present`:
`present`* {.preservesEmbedded.}: EmbeddedRef
of BindObserverKind.`absent`:
`absent`* {.preservesLiteral: "#f".}: bool
TransportConnection* {.preservesRecord: "connect-transport".} = object
`addr`*: Value
`control`* {.preservesEmbedded.}: EmbeddedRef
`resolved`*: Resolved
Step* = Value
ResolvedPathStep* {.preservesRecord: "path-step".} = object
`origin`* {.preservesEmbedded.}: EmbeddedRef
`pathStep`*: PathStep
`resolved`*: Resolved
BoundKind* {.pure.} = enum
`bound`, `Rejected`
BoundBound* {.preservesRecord: "bound".} = object
`pathStep`*: PathStep
`Bound`* {.preservesOr.} = object
case orKind*: BoundKind
of BoundKind.`bound`:
`bound`*: BoundBound
of BoundKind.`Rejected`:
`rejected`*: Rejected
ForceDisconnect* {.preservesRecord: "force-disconnect".} = object
Description* = Value
Rejected* {.preservesRecord: "rejected".} = object
`detail`*: Value
Resolve* {.preservesRecord: "resolve".} = object
`step`*: Step
`observer`* {.preservesEmbedded.}: EmbeddedRef
ResolvedKind* {.pure.} = enum
`accepted`, `Rejected`
ResolvedAccepted* {.preservesRecord: "accepted".} = object
`responderSession`* {.preservesEmbedded.}: EmbeddedRef
`Resolved`* {.preservesOr.} = object
case orKind*: ResolvedKind
of ResolvedKind.`accepted`:
`accepted`* {.preservesEmbedded.}: ResolvedAccepted
of ResolvedKind.`Rejected`:
`rejected`*: Rejected
TransportControl* = ForceDisconnect
ResolvePath* {.preservesRecord: "resolve-path".} = object
`route`*: Route
`addr`*: Value
`control`* {.preservesEmbedded.}: EmbeddedRef
`resolved`*: Resolved
PathStep* = Value
proc `$`*(x: Bind | Route | BindObserver | TransportConnection |
ResolvedPathStep |
Bound |
ForceDisconnect |
Rejected |
Resolve |
Resolved |
TransportControl |
ResolvePath): string =
`$`(toPreserves(x))
proc encode*(x: Bind | Route | BindObserver | TransportConnection |
ResolvedPathStep |
Bound |
ForceDisconnect |
Rejected |
Resolve |
Resolved |
TransportControl |
ResolvePath): seq[byte] =
encode(toPreserves(x))