Put during clauses in new facets
This commit is contained in:
parent
209d2327d2
commit
ac55c9fc75
|
@ -173,7 +173,8 @@ macro during*(turn: untyped; ds: Cap; pattern: Pattern; publishBody, retractBody
|
||||||
if `argCount` != 0 and `pattern`.analyse.capturePaths.len != `argCount`:
|
if `argCount` != 0 and `pattern`.analyse.capturePaths.len != `argCount`:
|
||||||
raiseAssert($`pattern`.analyse.capturePaths.len & " values captured but handler has " & $`argCount` & " arguments - " & $`pattern`)
|
raiseAssert($`pattern`.analyse.capturePaths.len & " values captured but handler has " & $`argCount` & " arguments - " & $`pattern`)
|
||||||
`callbackProc`
|
`callbackProc`
|
||||||
discard observe(`turn`, `ds`, `pattern`, during(`callbackSym`))
|
discard inFacet(`turn`) do (`turn`: var Turn):
|
||||||
|
discard observe(`turn`, `ds`, `pattern`, during(`callbackSym`))
|
||||||
|
|
||||||
macro during*(turn: untyped; ds: Cap; pattern: Pattern; publishBody: untyped) =
|
macro during*(turn: untyped; ds: Cap; pattern: Pattern; publishBody: untyped) =
|
||||||
## Variant of `during` without a retract body.
|
## Variant of `during` without a retract body.
|
||||||
|
@ -185,7 +186,8 @@ macro during*(turn: untyped; ds: Cap; pattern: Pattern; publishBody: untyped) =
|
||||||
if `argCount` != 0 and `pattern`.analyse.capturePaths.len != `argCount`:
|
if `argCount` != 0 and `pattern`.analyse.capturePaths.len != `argCount`:
|
||||||
raiseAssert($`pattern`.analyse.capturePaths.len & " values captured but handler has " & $`argCount` & " arguments - " & $`pattern`)
|
raiseAssert($`pattern`.analyse.capturePaths.len & " values captured but handler has " & $`argCount` & " arguments - " & $`pattern`)
|
||||||
`callbackProc`
|
`callbackProc`
|
||||||
discard observe(`turn`, `ds`, `pattern`, during(`callbackSym`))
|
discard inFacet(`turn`) do (`turn`: var Turn):
|
||||||
|
discard observe(`turn`, `ds`, `pattern`, during(`callbackSym`))
|
||||||
|
|
||||||
proc runActor*(name: string; bootProc: TurnAction) =
|
proc runActor*(name: string; bootProc: TurnAction) =
|
||||||
## Boot an actor `Actor` and churn ioqueue once.
|
## Boot an actor `Actor` and churn ioqueue once.
|
||||||
|
|
|
@ -507,6 +507,16 @@ proc stopIfInertAfter(action: TurnAction): TurnAction =
|
||||||
|
|
||||||
proc newFacet(turn: var Turn): Facet = newFacet(turn.facet.actor, turn.facet)
|
proc newFacet(turn: var Turn): Facet = newFacet(turn.facet.actor, turn.facet)
|
||||||
|
|
||||||
|
proc inFacet*(turn: var Turn; bootProc: TurnAction): Facet =
|
||||||
|
result = newFacet(turn)
|
||||||
|
recallFacet turn:
|
||||||
|
turn.facet = result
|
||||||
|
when tracing:
|
||||||
|
var act = ActionDescription(orKind: ActionDescriptionKind.facetstart)
|
||||||
|
act.facetstart.path.add result.path
|
||||||
|
turn.desc.actions.add act
|
||||||
|
stopIfInertAfter(bootProc)(turn)
|
||||||
|
|
||||||
proc newActor(name: string; parent: Facet): Actor =
|
proc newActor(name: string; parent: Facet): Actor =
|
||||||
result = Actor(
|
result = Actor(
|
||||||
name: name,
|
name: name,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Package
|
# Package
|
||||||
|
|
||||||
version = "20240314"
|
version = "20240315"
|
||||||
author = "Emery Hemingway"
|
author = "Emery Hemingway"
|
||||||
description = "Syndicated actors for conversational concurrency"
|
description = "Syndicated actors for conversational concurrency"
|
||||||
license = "Unlicense"
|
license = "Unlicense"
|
||||||
|
|
Loading…
Reference in New Issue