Move durings into new facets

This commit is contained in:
Emery Hemingway 2024-03-19 15:06:14 +00:00
parent d654195fb8
commit bf8f7e9aaa
4 changed files with 17 additions and 18 deletions

View File

@ -173,7 +173,6 @@ 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 inFacet(`turn`) do (`turn`: var Turn):
discard observe(`turn`, `ds`, `pattern`, during(`callbackSym`)) 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) =
@ -186,5 +185,4 @@ 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 inFacet(`turn`) do (`turn`: var Turn):
discard observe(`turn`, `ds`, `pattern`, during(`callbackSym`)) discard observe(`turn`, `ds`, `pattern`, during(`callbackSym`))

View File

@ -507,7 +507,7 @@ 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 = proc inFacet*(turn: var Turn; bootProc: TurnAction): Facet {.discardable.} =
result = newFacet(turn) result = newFacet(turn)
recallFacet turn: recallFacet turn:
turn.facet = result turn.facet = result

View File

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: ☭ 2021 Emery Hemingway # SPDX-FileCopyrightText: ☭ Emery Hemingway
# SPDX-License-Identifier: Unlicense # SPDX-License-Identifier: Unlicense
import std/[hashes, tables] import std/[hashes, tables]
@ -18,6 +18,7 @@ type
assertionMap: Table[Handle, DuringAction] assertionMap: Table[Handle, DuringAction]
method publish(de: DuringEntity; turn: var Turn; a: AssertionRef; h: Handle) = method publish(de: DuringEntity; turn: var Turn; a: AssertionRef; h: Handle) =
discard inFacet(turn) do (turn: var Turn):
let action = de.cb(turn, a.value, h) let action = de.cb(turn, a.value, h)
# assert(not action.isNil "should have put in a no-op action") # assert(not action.isNil "should have put in a no-op action")
let g = de.assertionMap.getOrDefault h let g = de.assertionMap.getOrDefault h
@ -26,7 +27,7 @@ method publish(de: DuringEntity; turn: var Turn; a: AssertionRef; h: Handle) =
de.assertionMap[h] = DuringAction(kind: act, action: action) de.assertionMap[h] = DuringAction(kind: act, action: action)
of dead: of dead:
de.assertionMap.del h de.assertionMap.del h
freshen(turn, action) action(turn)
of act: of act:
raiseAssert("during: duplicate handle in publish: " & $h) raiseAssert("during: duplicate handle in publish: " & $h)

View File

@ -1,6 +1,6 @@
# Package # Package
version = "20240315" version = "20240319"
author = "Emery Hemingway" author = "Emery Hemingway"
description = "Syndicated actors for conversational concurrency" description = "Syndicated actors for conversational concurrency"
license = "Unlicense" license = "Unlicense"