Put during clauses in new facets

This commit is contained in:
Emery Hemingway 2024-03-15 10:19:43 +00:00
parent 209d2327d2
commit ac55c9fc75
3 changed files with 15 additions and 3 deletions

View File

@ -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.

View File

@ -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,

View File

@ -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"