Use new Preserves embeddeding
This commit is contained in:
parent
59ece65f3b
commit
7721138bf4
|
@ -39,7 +39,7 @@ type
|
|||
Entity* = ref object of RootObj
|
||||
oid*: Oid # oid is how Entities are identified over the wire
|
||||
|
||||
Cap* {.final.} = ref object of EmbeddedObj
|
||||
Cap* {.preservesEmbedded.} = ref object of EmbeddedObj
|
||||
relay*: Facet
|
||||
target*: Entity
|
||||
attenuation*: Attenuation
|
||||
|
@ -292,7 +292,7 @@ proc publish(turn: var Turn; r: Cap; v: Value; h: Handle) =
|
|||
act.enqueue.event.target.oid = r.target.oid.toPreserves
|
||||
act.enqueue.event.detail = trace.TurnEvent(orKind: TurnEventKind.assert)
|
||||
act.enqueue.event.detail.assert.assertion.value.value =
|
||||
mapEmbeds(v) do (r: Cap) -> Value: discard
|
||||
mapEmbeds(v) do (cap: Value) -> Value: discard
|
||||
act.enqueue.event.detail.assert.handle = h
|
||||
turn.desc.actions.add act
|
||||
|
||||
|
|
|
@ -19,10 +19,8 @@ type
|
|||
method publish(ds: Dataspace; turn: var Turn; a: AssertionRef; h: Handle) {.gcsafe.} =
|
||||
if add(ds.index, turn, a.value):
|
||||
var obs = a.value.preservesTo(Observe)
|
||||
if obs.isSome:
|
||||
var cap = obs.get.observer.unembed(Cap)
|
||||
if cap.isSome:
|
||||
ds.index.add(turn, obs.get.pattern, cap.get)
|
||||
if obs.isSome and obs.get.observer of Cap:
|
||||
ds.index.add(turn, obs.get.pattern, Cap(obs.get.observer))
|
||||
ds.handleMap[h] = a.value
|
||||
|
||||
method retract(ds: Dataspace; turn: var Turn; h: Handle) {.gcsafe.} =
|
||||
|
@ -30,9 +28,8 @@ method retract(ds: Dataspace; turn: var Turn; h: Handle) {.gcsafe.} =
|
|||
if remove(ds.index, turn, v):
|
||||
ds.handleMap.del h
|
||||
var obs = v.preservesTo(Observe)
|
||||
if obs.isSome:
|
||||
var cap = obs.get.observer.unembed(Cap)
|
||||
ds.index.remove(turn, obs.get.pattern, cap.get)
|
||||
if obs.isSome and obs.get.observer of Cap:
|
||||
ds.index.remove(turn, obs.get.pattern, Cap(obs.get.observer))
|
||||
|
||||
method message(ds: Dataspace; turn: var Turn; a: AssertionRef) {.gcsafe.} =
|
||||
ds.index.deliverMessage(turn, a.value)
|
||||
|
|
|
@ -45,4 +45,4 @@ method retract(de: DuringEntity; turn: var Turn; h: Handle) =
|
|||
proc during*(cb: DuringProc): DuringEntity = DuringEntity(cb: cb)
|
||||
|
||||
proc observe*(turn: var Turn; ds: Cap; pat: Pattern; e: Entity): Handle =
|
||||
publish(turn, ds, Observe(pattern: pat, observer: newCap(turn, e).embed))
|
||||
publish(turn, ds, Observe(pattern: pat, observer: newCap(turn, e)))
|
||||
|
|
|
@ -5,7 +5,7 @@ import
|
|||
type
|
||||
Observe* {.preservesRecord: "Observe".} = object
|
||||
`pattern`*: dataspacePatterns.Pattern
|
||||
`observer`* {.preservesEmbedded.}: Value
|
||||
`observer`* {.preservesEmbedded.}: EmbeddedRef
|
||||
|
||||
proc `$`*(x: Observe): string =
|
||||
`$`(toPreserves(x))
|
||||
|
|
|
@ -5,39 +5,31 @@ import
|
|||
type
|
||||
AnyAtomKind* {.pure.} = enum
|
||||
`bool`, `float`, `double`, `int`, `string`, `bytes`, `symbol`, `embedded`
|
||||
AnyAtomBool* = bool
|
||||
AnyAtomFloat* = float32
|
||||
AnyAtomDouble* = float64
|
||||
AnyAtomInt* = BiggestInt
|
||||
AnyAtomString* = string
|
||||
AnyAtomBytes* = seq[byte]
|
||||
AnyAtomSymbol* = Symbol
|
||||
AnyAtomEmbedded* = Value
|
||||
`AnyAtom`* {.preservesOr.} = object
|
||||
case orKind*: AnyAtomKind
|
||||
of AnyAtomKind.`bool`:
|
||||
`bool`*: AnyAtomBool
|
||||
`bool`*: bool
|
||||
|
||||
of AnyAtomKind.`float`:
|
||||
`float`*: AnyAtomFloat
|
||||
`float`*: float32
|
||||
|
||||
of AnyAtomKind.`double`:
|
||||
`double`*: AnyAtomDouble
|
||||
`double`*: float64
|
||||
|
||||
of AnyAtomKind.`int`:
|
||||
`int`*: AnyAtomInt
|
||||
`int`*: BiggestInt
|
||||
|
||||
of AnyAtomKind.`string`:
|
||||
`string`*: AnyAtomString
|
||||
`string`*: string
|
||||
|
||||
of AnyAtomKind.`bytes`:
|
||||
`bytes`*: AnyAtomBytes
|
||||
`bytes`*: seq[byte]
|
||||
|
||||
of AnyAtomKind.`symbol`:
|
||||
`symbol`*: AnyAtomSymbol
|
||||
`symbol`*: Symbol
|
||||
|
||||
of AnyAtomKind.`embedded`:
|
||||
`embedded`*: AnyAtomEmbedded
|
||||
`embedded`* {.preservesEmbedded.}: EmbeddedRef
|
||||
|
||||
|
||||
DLit* {.preservesRecord: "lit".} = object
|
||||
|
@ -63,13 +55,13 @@ type
|
|||
`DCompound`* {.preservesOr.} = object
|
||||
case orKind*: DCompoundKind
|
||||
of DCompoundKind.`rec`:
|
||||
`rec`*: DCompoundRec
|
||||
`rec`* {.preservesEmbedded.}: DCompoundRec
|
||||
|
||||
of DCompoundKind.`arr`:
|
||||
`arr`*: DCompoundArr
|
||||
`arr`* {.preservesEmbedded.}: DCompoundArr
|
||||
|
||||
of DCompoundKind.`dict`:
|
||||
`dict`*: DCompoundDict
|
||||
`dict`* {.preservesEmbedded.}: DCompoundDict
|
||||
|
||||
|
||||
PatternKind* {.pure.} = enum
|
||||
|
@ -80,13 +72,13 @@ type
|
|||
`ddiscard`*: DDiscard
|
||||
|
||||
of PatternKind.`DBind`:
|
||||
`dbind`*: DBind
|
||||
`dbind`* {.preservesEmbedded.}: DBind
|
||||
|
||||
of PatternKind.`DLit`:
|
||||
`dlit`*: DLit
|
||||
`dlit`* {.preservesEmbedded.}: DLit
|
||||
|
||||
of PatternKind.`DCompound`:
|
||||
`dcompound`*: DCompound
|
||||
`dcompound`* {.preservesEmbedded.}: DCompound
|
||||
|
||||
|
||||
proc `$`*(x: AnyAtom | DLit | DBind | DDiscard | DCompound | Pattern): string =
|
||||
|
|
|
@ -5,7 +5,7 @@ import
|
|||
type
|
||||
Bind* {.preservesRecord: "bind".} = object
|
||||
`description`*: Description
|
||||
`target`* {.preservesEmbedded.}: Value
|
||||
`target`* {.preservesEmbedded.}: EmbeddedRef
|
||||
`observer`*: BindObserver
|
||||
|
||||
Route* {.preservesRecord: "route".} = object
|
||||
|
@ -14,11 +14,10 @@ type
|
|||
|
||||
BindObserverKind* {.pure.} = enum
|
||||
`present`, `absent`
|
||||
BindObserverPresent* = Bound
|
||||
`BindObserver`* {.preservesOr.} = object
|
||||
case orKind*: BindObserverKind
|
||||
of BindObserverKind.`present`:
|
||||
`present`*: BindObserverPresent
|
||||
`present`* {.preservesEmbedded.}: EmbeddedRef
|
||||
|
||||
of BindObserverKind.`absent`:
|
||||
`absent`* {.preservesLiteral: "#f".}: bool
|
||||
|
@ -26,12 +25,12 @@ type
|
|||
|
||||
TransportConnection* {.preservesRecord: "connect-transport".} = object
|
||||
`addr`*: Value
|
||||
`control`* {.preservesEmbedded.}: TransportControl
|
||||
`control`* {.preservesEmbedded.}: EmbeddedRef
|
||||
`resolved`*: Resolved
|
||||
|
||||
Step* = Value
|
||||
ResolvedPathStep* {.preservesRecord: "path-step".} = object
|
||||
`origin`* {.preservesEmbedded.}: Resolve
|
||||
`origin`* {.preservesEmbedded.}: EmbeddedRef
|
||||
`pathStep`*: PathStep
|
||||
`resolved`*: Resolved
|
||||
|
||||
|
@ -57,17 +56,17 @@ type
|
|||
|
||||
Resolve* {.preservesRecord: "resolve".} = object
|
||||
`step`*: Step
|
||||
`observer`* {.preservesEmbedded.}: Resolved
|
||||
`observer`* {.preservesEmbedded.}: EmbeddedRef
|
||||
|
||||
ResolvedKind* {.pure.} = enum
|
||||
`accepted`, `Rejected`
|
||||
ResolvedAccepted* {.preservesRecord: "accepted".} = object
|
||||
`responderSession`* {.preservesEmbedded.}: Value
|
||||
`responderSession`* {.preservesEmbedded.}: EmbeddedRef
|
||||
|
||||
`Resolved`* {.preservesOr.} = object
|
||||
case orKind*: ResolvedKind
|
||||
of ResolvedKind.`accepted`:
|
||||
`accepted`*: ResolvedAccepted
|
||||
`accepted`* {.preservesEmbedded.}: ResolvedAccepted
|
||||
|
||||
of ResolvedKind.`Rejected`:
|
||||
`rejected`*: Rejected
|
||||
|
@ -77,7 +76,7 @@ type
|
|||
ResolvePath* {.preservesRecord: "resolve-path".} = object
|
||||
`route`*: Route
|
||||
`addr`*: Value
|
||||
`control`* {.preservesEmbedded.}: TransportControl
|
||||
`control`* {.preservesEmbedded.}: EmbeddedRef
|
||||
`resolved`*: Resolved
|
||||
|
||||
PathStep* = Value
|
||||
|
|
|
@ -5,11 +5,10 @@ import
|
|||
type
|
||||
HostPatternKind* {.pure.} = enum
|
||||
`host`, `any`
|
||||
HostPatternHost* = string
|
||||
`HostPattern`* {.preservesOr.} = object
|
||||
case orKind*: HostPatternKind
|
||||
of HostPatternKind.`host`:
|
||||
`host`*: HostPatternHost
|
||||
`host`*: string
|
||||
|
||||
of HostPatternKind.`any`:
|
||||
`any`* {.preservesLiteral: "#f".}: bool
|
||||
|
@ -20,20 +19,18 @@ type
|
|||
|
||||
MethodPatternKind* {.pure.} = enum
|
||||
`any`, `specific`
|
||||
MethodPatternSpecific* = Symbol
|
||||
`MethodPattern`* {.preservesOr.} = object
|
||||
case orKind*: MethodPatternKind
|
||||
of MethodPatternKind.`any`:
|
||||
`any`* {.preservesLiteral: "#f".}: bool
|
||||
|
||||
of MethodPatternKind.`specific`:
|
||||
`specific`*: MethodPatternSpecific
|
||||
`specific`*: Symbol
|
||||
|
||||
|
||||
MimeType* = Symbol
|
||||
QueryValueKind* {.pure.} = enum
|
||||
`string`, `file`
|
||||
QueryValueString* = string
|
||||
QueryValueFile* {.preservesRecord: "file".} = object
|
||||
`filename`*: string
|
||||
`headers`*: Headers
|
||||
|
@ -42,7 +39,7 @@ type
|
|||
`QueryValue`* {.preservesOr.} = object
|
||||
case orKind*: QueryValueKind
|
||||
of QueryValueKind.`string`:
|
||||
`string`*: QueryValueString
|
||||
`string`*: string
|
||||
|
||||
of QueryValueKind.`file`:
|
||||
`file`*: QueryValueFile
|
||||
|
@ -60,11 +57,10 @@ type
|
|||
|
||||
RequestBodyKind* {.pure.} = enum
|
||||
`present`, `absent`
|
||||
RequestBodyPresent* = seq[byte]
|
||||
`RequestBody`* {.preservesOr.} = object
|
||||
case orKind*: RequestBodyKind
|
||||
of RequestBodyKind.`present`:
|
||||
`present`*: RequestBodyPresent
|
||||
`present`*: seq[byte]
|
||||
|
||||
of RequestBodyKind.`absent`:
|
||||
`absent`* {.preservesLiteral: "#f".}: bool
|
||||
|
@ -113,19 +109,18 @@ type
|
|||
`port`*: BiggestInt
|
||||
`method`*: MethodPattern
|
||||
`path`*: PathPattern
|
||||
`handler`* {.preservesEmbedded.}: HttpRequest
|
||||
`handler`* {.preservesEmbedded.}: Value
|
||||
|
||||
HttpContext* {.preservesRecord: "request".} = object
|
||||
`req`*: HttpRequest
|
||||
`res`* {.preservesEmbedded.}: HttpResponse
|
||||
`res`* {.preservesEmbedded.}: Value
|
||||
|
||||
PathPatternElementKind* {.pure.} = enum
|
||||
`label`, `wildcard`, `rest`
|
||||
PathPatternElementLabel* = string
|
||||
`PathPatternElement`* {.preservesOr.} = object
|
||||
case orKind*: PathPatternElementKind
|
||||
of PathPatternElementKind.`label`:
|
||||
`label`*: PathPatternElementLabel
|
||||
`label`*: string
|
||||
|
||||
of PathPatternElementKind.`wildcard`:
|
||||
`wildcard`* {.preservesLiteral: "_".}: bool
|
||||
|
@ -136,15 +131,13 @@ type
|
|||
|
||||
ChunkKind* {.pure.} = enum
|
||||
`string`, `bytes`
|
||||
ChunkString* = string
|
||||
ChunkBytes* = seq[byte]
|
||||
`Chunk`* {.preservesOr.} = object
|
||||
case orKind*: ChunkKind
|
||||
of ChunkKind.`string`:
|
||||
`string`*: ChunkString
|
||||
`string`*: string
|
||||
|
||||
of ChunkKind.`bytes`:
|
||||
`bytes`*: ChunkBytes
|
||||
`bytes`*: seq[byte]
|
||||
|
||||
|
||||
PathPattern* = seq[PathPatternElement]
|
||||
|
|
|
@ -95,15 +95,13 @@ type
|
|||
|
||||
PacketKind* {.pure.} = enum
|
||||
`complete`, `fragmented`
|
||||
PacketComplete* = seq[byte]
|
||||
PacketFragmented* = seq[seq[byte]]
|
||||
`Packet`* {.preservesOr.} = object
|
||||
case orKind*: PacketKind
|
||||
of PacketKind.`complete`:
|
||||
`complete`*: PacketComplete
|
||||
`complete`*: seq[byte]
|
||||
|
||||
of PacketKind.`fragmented`:
|
||||
`fragmented`*: PacketFragmented
|
||||
`fragmented`*: seq[seq[byte]]
|
||||
|
||||
|
||||
proc `$`*(x: NoiseDescriptionDetail | NoisePreSharedKeys | SecretKeyField |
|
||||
|
|
|
@ -34,7 +34,7 @@ type
|
|||
`Packet`* {.preservesOr.} = object
|
||||
case orKind*: PacketKind
|
||||
of PacketKind.`Turn`:
|
||||
`turn`*: Turn
|
||||
`turn`* {.preservesEmbedded.}: Turn
|
||||
|
||||
of PacketKind.`Error`:
|
||||
`error`*: Error
|
||||
|
@ -57,7 +57,7 @@ type
|
|||
`message`*: Message
|
||||
|
||||
of EventKind.`Sync`:
|
||||
`sync`*: Sync
|
||||
`sync`* {.preservesEmbedded.}: Sync
|
||||
|
||||
|
||||
proc `$`*(x: Error | Turn | Message | Retract | Assert | Sync | TurnEvent | Oid |
|
||||
|
|
|
@ -5,7 +5,6 @@ import
|
|||
type
|
||||
StateKind* {.pure.} = enum
|
||||
`started`, `ready`, `failed`, `complete`, `userDefined`
|
||||
StateUserDefined* = Value
|
||||
`State`* {.preservesOr.} = object
|
||||
case orKind*: StateKind
|
||||
of StateKind.`started`:
|
||||
|
@ -21,7 +20,7 @@ type
|
|||
`complete`* {.preservesLiteral: "complete".}: bool
|
||||
|
||||
of StateKind.`userDefined`:
|
||||
`userdefined`*: StateUserDefined
|
||||
`userdefined`*: Value
|
||||
|
||||
|
||||
ServiceObject* {.preservesRecord: "service-object".} = object
|
||||
|
|
|
@ -5,11 +5,10 @@ import
|
|||
type
|
||||
CreditAmountKind* {.pure.} = enum
|
||||
`count`, `unbounded`
|
||||
CreditAmountCount* = BiggestInt
|
||||
`CreditAmount`* {.preservesOr.} = object
|
||||
case orKind*: CreditAmountKind
|
||||
of CreditAmountKind.`count`:
|
||||
`count`*: CreditAmountCount
|
||||
`count`*: BiggestInt
|
||||
|
||||
of CreditAmountKind.`unbounded`:
|
||||
`unbounded`* {.preservesLiteral: "unbounded".}: bool
|
||||
|
@ -23,8 +22,8 @@ type
|
|||
`message`*: string
|
||||
|
||||
StreamConnection* {.preservesRecord: "stream-connection".} = object
|
||||
`source`* {.preservesEmbedded.}: Source
|
||||
`sink`* {.preservesEmbedded.}: Sink
|
||||
`source`* {.preservesEmbedded.}: EmbeddedRef
|
||||
`sink`* {.preservesEmbedded.}: EmbeddedRef
|
||||
`spec`*: Value
|
||||
|
||||
`LineMode`* {.preservesOr, pure.} = enum
|
||||
|
@ -32,7 +31,7 @@ type
|
|||
SourceKind* {.pure.} = enum
|
||||
`sink`, `StreamError`, `credit`
|
||||
SourceSink* {.preservesRecord: "sink".} = object
|
||||
`controller`* {.preservesEmbedded.}: Sink
|
||||
`controller`* {.preservesEmbedded.}: EmbeddedRef
|
||||
|
||||
SourceCredit* {.preservesRecord: "credit".} = object
|
||||
`amount`*: CreditAmount
|
||||
|
@ -41,7 +40,7 @@ type
|
|||
`Source`* {.acyclic, preservesOr.} = ref object
|
||||
case orKind*: SourceKind
|
||||
of SourceKind.`sink`:
|
||||
`sink`*: SourceSink
|
||||
`sink`* {.preservesEmbedded.}: SourceSink
|
||||
|
||||
of SourceKind.`StreamError`:
|
||||
`streamerror`*: StreamError
|
||||
|
@ -53,7 +52,7 @@ type
|
|||
SinkKind* {.pure.} = enum
|
||||
`source`, `StreamError`, `data`, `eof`
|
||||
SinkSource* {.preservesRecord: "source".} = object
|
||||
`controller`* {.preservesEmbedded.}: Source
|
||||
`controller`* {.preservesEmbedded.}: EmbeddedRef
|
||||
|
||||
SinkData* {.preservesRecord: "data".} = object
|
||||
`payload`*: Value
|
||||
|
@ -64,7 +63,7 @@ type
|
|||
`Sink`* {.acyclic, preservesOr.} = ref object
|
||||
case orKind*: SinkKind
|
||||
of SinkKind.`source`:
|
||||
`source`*: SinkSource
|
||||
`source`* {.preservesEmbedded.}: SinkSource
|
||||
|
||||
of SinkKind.`StreamError`:
|
||||
`streamerror`*: StreamError
|
||||
|
|
|
@ -130,7 +130,6 @@ type
|
|||
|
||||
CaveatKind* {.pure.} = enum
|
||||
`Rewrite`, `Alts`, `Reject`, `unknown`
|
||||
CaveatUnknown* = Value
|
||||
`Caveat`* {.preservesOr.} = object
|
||||
case orKind*: CaveatKind
|
||||
of CaveatKind.`Rewrite`:
|
||||
|
@ -143,7 +142,7 @@ type
|
|||
`reject`*: Reject
|
||||
|
||||
of CaveatKind.`unknown`:
|
||||
`unknown`*: CaveatUnknown
|
||||
`unknown`*: Value
|
||||
|
||||
|
||||
PNot* {.preservesRecord: "not".} = object
|
||||
|
|
|
@ -8,7 +8,7 @@ type
|
|||
`port`*: BiggestInt
|
||||
|
||||
TcpPeerInfo* {.preservesRecord: "tcp-peer".} = object
|
||||
`handle`* {.preservesEmbedded.}: Value
|
||||
`handle`* {.preservesEmbedded.}: EmbeddedRef
|
||||
`local`*: TcpLocal
|
||||
`remote`*: TcpRemote
|
||||
|
||||
|
|
|
@ -91,8 +91,10 @@ proc rewriteCapOut(relay: Relay; cap: Cap; exported: var seq[WireSymbol]): WireR
|
|||
proc rewriteOut(relay: Relay; v: Assertion):
|
||||
tuple[rewritten: Value, exported: seq[WireSymbol]] {.gcsafe.} =
|
||||
var exported: seq[WireSymbol]
|
||||
result.rewritten = mapEmbeds(v) do (cap: Cap) -> Value:
|
||||
rewriteCapOut(relay, cap, exported).toPreserves
|
||||
result.rewritten = mapEmbeds(v) do (pr: Value) -> Value:
|
||||
let o = pr.unembed(Cap); if o.isSome:
|
||||
rewriteCapOut(relay, o.get, exported).toPreserves
|
||||
else: pr
|
||||
result.exported = exported
|
||||
|
||||
proc register(relay: Relay; v: Assertion; h: Handle): tuple[rewritten: Value, exported: seq[WireSymbol]] =
|
||||
|
@ -183,10 +185,10 @@ proc rewriteIn(relay; facet; v: Value):
|
|||
tuple[rewritten: Assertion; imported: seq[WireSymbol]] {.gcsafe.} =
|
||||
var imported: seq[WireSymbol]
|
||||
result.rewritten = mapEmbeds(v) do (pr: Value) -> Value:
|
||||
var wr: WireRef
|
||||
if wr.fromPreserves(pr):
|
||||
rewriteCapIn(relay, facet, wr, imported).embed
|
||||
else: pr
|
||||
let wr = pr.preservesTo WireRef; if wr.isSome:
|
||||
result = rewriteCapIn(relay, facet, wr.get, imported).embed
|
||||
else:
|
||||
result = pr
|
||||
result.imported = imported
|
||||
|
||||
proc close(r: Relay) = discard
|
||||
|
@ -265,7 +267,7 @@ proc newRelay(turn: var Turn; opts: RelayOptions; setup: RelaySetup): Relay =
|
|||
proc transportConnectionResolve(addrAss: Assertion; ds: Cap): gatekeeper.TransportConnection =
|
||||
result.`addr` = addrAss
|
||||
result.resolved = Resolved(orKind: ResolvedKind.accepted)
|
||||
result.resolved.accepted.responderSession = ds.embed
|
||||
result.resolved.accepted.responderSession = ds
|
||||
|
||||
proc spawnRelay*(name: string; turn: var Turn; ds: Cap; addrAss: Assertion; opts: RelayActorOptions; setup: RelaySetup) =
|
||||
discard spawn(name, turn) do (turn: var Turn):
|
||||
|
@ -346,20 +348,16 @@ when defined(posix):
|
|||
discard publish(turn, shutdownCap, true)
|
||||
proc duringCallback(turn: var Turn; ass: Assertion; h: Handle): TurnAction =
|
||||
let facet = inFacet(turn) do (turn: var Turn):
|
||||
var resolvePath = ResolvePath(route: route, `addr`: addrAss)
|
||||
if resolvePath.resolved.fromPreserves(ass):
|
||||
discard publish(turn, ds, resolvePath)
|
||||
else:
|
||||
raise newException(CatchableError, "unhandled gatekeeper response " & $ass)
|
||||
let o = ass.preservesTo Resolved; if o.isSome:
|
||||
discard publish(turn, ds, ResolvePath(
|
||||
route: route, `addr`: addrAss, resolved: o.get))
|
||||
proc action(turn: var Turn) =
|
||||
stop(turn, facet)
|
||||
result = action
|
||||
var resolve = Resolve(
|
||||
step: step,
|
||||
observer: Resolved(orKind: ResolvedKind.accepted),
|
||||
observer: newCap(turn, during(duringCallback)),
|
||||
)
|
||||
resolve.observer.accepted.responderSession =
|
||||
embed newCap(turn, during(duringCallback))
|
||||
discard publish(turn, gatekeeper, resolve)
|
||||
|
||||
proc connect*(turn: var Turn; ds: Cap; route: Route; transport: Tcp; step: Value) =
|
||||
|
|
Loading…
Reference in New Issue