From 48408d2763e5f20048d55647e14ed7705d25641b Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Mon, 22 Apr 2024 14:49:14 +0200 Subject: [PATCH] Use new dataspace patterns --- lock.json | 16 ++++++++-------- src/mount_actor.nim | 9 ++++++--- src/syndesizer/base64_decoder.nim | 8 ++++---- src/syndesizer/cache_actor.nim | 6 +++--- src/syndesizer/file_system_usage.nim | 4 ++-- src/syndesizer/pulses.nim | 5 +++-- src/syndesizer/xml_translator.nim | 9 +++++---- src/xslt_actor.nim | 4 ++-- syndicate_utils.nimble | 4 ++-- 9 files changed, 35 insertions(+), 30 deletions(-) diff --git a/lock.json b/lock.json index 403a8b3..c098820 100644 --- a/lock.json +++ b/lock.json @@ -71,11 +71,11 @@ "packages": [ "preserves" ], - "path": "/nix/store/2hy124xgabz134dxj3wji7mp47fdwy3w-source", - "rev": "9ae435a83c6d5028405538af5d24a023af625b6e", - "sha256": "1k7ywcp1a53x2fpc6wc2b0qzb264dkifash0s1wcp66rw3lx15k2", + "path": "/nix/store/hzb7af7lbd4kgd5y4hbgxv1lswig36yj-source", + "rev": "fd498c6457cb9ad2f3179daa40da69eec00326dd", + "sha256": "182xvw04vjw83mlcrkwkip29b44h0v8dapg2014k9011h90mdsj4", "srcDir": "src", - "url": "https://git.syndicate-lang.org/ehmry/preserves-nim/archive/9ae435a83c6d5028405538af5d24a023af625b6e.tar.gz" + "url": "https://git.syndicate-lang.org/ehmry/preserves-nim/archive/fd498c6457cb9ad2f3179daa40da69eec00326dd.tar.gz" }, { "method": "fetchzip", @@ -93,11 +93,11 @@ "packages": [ "syndicate" ], - "path": "/nix/store/9ll8f00v0phhlglc47b0r4n6sc4545jx-source", - "rev": "6487ef65d0f98a9c8c9a163cd3bc02540ebb3367", - "sha256": "0myyzf7irv7gwn7k1m3kv0bwkbkw30hknvh4sv16i5wdhnqrlyb2", + "path": "/nix/store/gr7dbxq4ixfyf7rdcnxp9n08faglxp9n-source", + "rev": "c6038050ec359927df1a8209c7b1d1f3c1c9614b", + "sha256": "1awsh40j60kh4crxnz5bankmgk0qxa636hczsnbrax87jf4ampsy", "srcDir": "src", - "url": "https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/6487ef65d0f98a9c8c9a163cd3bc02540ebb3367.tar.gz" + "url": "https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/c6038050ec359927df1a8209c7b1d1f3c1c9614b.tar.gz" }, { "method": "fetchzip", diff --git a/src/mount_actor.nim b/src/mount_actor.nim index db900db..cd2fd26 100644 --- a/src/mount_actor.nim +++ b/src/mount_actor.nim @@ -7,7 +7,7 @@ when not defined(linux): {.error: "this component only tested for Linux".} import std/oserrors -import preserves +import preserves, preserves/sugar import syndicate import ./schema/mountpoints @@ -23,8 +23,11 @@ proc umount(target: cstring): cint {.importc, header: "".} proc spawnMountActor*(turn: var Turn; ds: Cap): Actor {.discardable.} = spawnActor(turn, "mount_actor") do (turn: var Turn): let - targetPat = ?Observe(pattern: !Mountpoint) ?? { 1: grabLit() } - sourcePat = ?Observe(pattern: !Mountpoint) ?? { 0: grabLit(), 2: grabLit() } + targetPat = observePattern(!Mountpoint, { @[%1]: grabLit() }) + sourcePat = observePattern(!Mountpoint, { + @[%0]: grabLit(), + @[%2]: grabLit(), + }) during(turn, ds, ?:BootArgs) do (ds: Cap): during(turn, ds, targetPat) do (target: string): during(turn, ds, sourcePat) do (source: string, fsType: string): diff --git a/src/syndesizer/base64_decoder.nim b/src/syndesizer/base64_decoder.nim index b230f27..31729b5 100644 --- a/src/syndesizer/base64_decoder.nim +++ b/src/syndesizer/base64_decoder.nim @@ -3,7 +3,7 @@ import std/[base64, os] import pkg/hashlib/misc/blake2 -import preserves, syndicate +import preserves, preserves/sugar, syndicate import ../schema/config import ../schema/base64 as schema @@ -15,21 +15,21 @@ proc spawnBase64Decoder*(turn: var Turn; root: Cap): Actor {.discardable.} = let tmpDir = getTempDir() during(turn, root, ?:Base64DecoderArguments) do (ds: Cap): - let decTextPat = ?Observe(pattern: !Base64Text) ?? { 0: grabLit() } + let decTextPat = observePattern(!Base64Text, { @[%0]: grabLit() }) during(turn, ds, decTextPat) do (txt: string): discard publish(turn, ds, Base64Text( txt: txt, bin: cast[seq[byte]](decode(txt)), )) - let encTextPat = ?Observe(pattern: !Base64Text) ?? { 1: grabLit() } + let encTextPat = observePattern(!Base64Text, { @[%1]: grabLit() }) during(turn, ds, encTextPat) do (bin: seq[byte]): discard publish(turn, ds, Base64Text( txt: encode(bin), bin: bin, )) - let decFilePat = ?Observe(pattern: !Base64File) ?? { 0: grabLit() } + let decFilePat = observePattern( !Base64File, { @[%0]: grabLit() }) during(turn, ds, decFilePat) do (txt: string): var bin = decode(txt) var ctx = init[BLAKE2B_512]() diff --git a/src/syndesizer/cache_actor.nim b/src/syndesizer/cache_actor.nim index 6d297ea..b391755 100644 --- a/src/syndesizer/cache_actor.nim +++ b/src/syndesizer/cache_actor.nim @@ -30,9 +30,9 @@ method publish(cache: CacheEntity; turn: var Turn; ass: AssertionRef; h: Handle) stop(turn) # end this facet proc isObserve(pat: Pattern): bool = - pat.orKind == PatternKind.DCompound and - pat.dcompound.orKind == DCompoundKind.rec and - pat.dcompound.rec.label.isSymbol"Observe" + pat.orKind == PatternKind.group and + pat.group.type.orKind == GroupTypeKind.rec and + pat.group.type.rec.label.isSymbol"Observe" proc spawnCacheActor*(turn: var Turn; root: Cap): Actor = spawnActor(turn, "cache_actor") do (turn: var Turn): diff --git a/src/syndesizer/file_system_usage.nim b/src/syndesizer/file_system_usage.nim index b3ccc71..243c257 100644 --- a/src/syndesizer/file_system_usage.nim +++ b/src/syndesizer/file_system_usage.nim @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Unlicense import std/[dirs, os, paths] -import preserves +import preserves, preserves/sugar import syndicate import ../schema/[assertions, config] @@ -10,7 +10,7 @@ import ../schema/[assertions, config] proc spawnFileSystemUsageActor*(turn: var Turn; root: Cap): Actor {.discardable.} = spawn("file-system-usage", turn) do (turn: var Turn): during(turn, root, ?:FileSystemUsageArguments) do (ds: Cap): - var pat = ?Observe(pattern: !FileSystemUsage) ?? { 0: grab() } + let pat = observePattern(!FileSystemUsage, { @[%0]: grab() }) during(turn, ds, pat) do (lit: Literal[string]): var ass = FileSystemUsage(path: lit.value) if fileExists(ass.path): ass.size = getFileSize(ass.path) diff --git a/src/syndesizer/pulses.nim b/src/syndesizer/pulses.nim index d30ec66..6896fbd 100644 --- a/src/syndesizer/pulses.nim +++ b/src/syndesizer/pulses.nim @@ -2,7 +2,8 @@ # SPDX-License-Identifier: Unlicense import std/[options, tables, times] -import preserves, syndicate, syndicate/drivers/timers +import preserves, preserves/sugar +import syndicate, syndicate/drivers/timers import ../schema/[assertions, config] @@ -87,7 +88,7 @@ proc spawnPulseActor*(turn: var Turn; root: Cap): Actor = ## Spawn an actor that retracts and re-asserts observers on ## a timed pulse. Requires a timer service on the `root` capability. spawnActor(turn, "pulse") do (turn: var Turn): - let grabPeriod = ?Observe(pattern: !Pulse) ?? { 0: grab() } + let grabPeriod = observePattern(!Pulse, { @[%0]: grab() }) during(turn, root, ?:PulseArguments) do (ds: Cap): during(turn, ds, grabPeriod) do (lit: Literal[float]): if lit.value < 0.000_1: diff --git a/src/syndesizer/xml_translator.nim b/src/syndesizer/xml_translator.nim index acf67c2..e7c9011 100644 --- a/src/syndesizer/xml_translator.nim +++ b/src/syndesizer/xml_translator.nim @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Unlicense import std/[options, parsexml, xmlparser, xmltree] -import preserves, preserves/xmlhooks +import preserves, preserves/sugar, preserves/xmlhooks import syndicate import ../schema/[assertions, config] @@ -20,10 +20,11 @@ proc translatePreserves(pr: Value): XmlTranslation {.gcsafe.} = proc spawnXmlTranslator*(turn: var Turn; root: Cap): Actor {.discardable.} = spawnActor(turn, "xml-translator") do (turn: var Turn): during(turn, root, ?:XmlTranslatorArguments) do (ds: Cap): - let obsPat = ?Observe(pattern: !XmlTranslation) - during(turn, ds, obsPat ?? {0: grab()}) do (xs: Literal[string]): + let xmlPat = observePattern(!XmlTranslation, {@[%0]:grab()}) + during(turn, ds, xmlPat) do (xs: Literal[string]): publish(turn, ds, translateXml(xs.value)) - during(turn, ds, obsPat ?? {1: grab()}) do (pr: Literal[Value]): + let prPat = observePattern(!XmlTranslation, {@[%1]:grab()}) + during(turn, ds, prPat) do (pr: Literal[Value]): publish(turn, ds, translatePreserves(pr.value)) when isMainModule: diff --git a/src/xslt_actor.nim b/src/xslt_actor.nim index 8b81879..b22dfe0 100644 --- a/src/xslt_actor.nim +++ b/src/xslt_actor.nim @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Unlicense import std/[os, strutils] -import preserves, syndicate +import preserves, preserves/sugar, syndicate import ./schema/[assertions, config] {.passC: staticExec("pkg-config --cflags libxslt").} @@ -177,7 +177,7 @@ proc spawnXsltActor*(turn: var Turn; root: Cap): Actor {.discardable.} = spawnActor(turn, "xslt") do (turn: var Turn): initLibXml() during(turn, root, ?:XsltArguments) do (ds: Cap): - let sheetsPat = ?Observe(pattern: !XsltTransform) ?? {0: grab(), 1: grab()} + let sheetsPat = observePattern(!XsltTransform, {@[%0]: grab(), @[%1]: grab()}) during(turn, ds, sheetsPat) do (stylesheet: Literal[string], input: Literal[string]): let cur = loadStylesheet(stylesheet.value) if cur.isNil: diff --git a/syndicate_utils.nimble b/syndicate_utils.nimble index 9e287ec..b41db29 100644 --- a/syndicate_utils.nimble +++ b/syndicate_utils.nimble @@ -1,6 +1,6 @@ # Package -version = "20240408" +version = "20240422" author = "Emery Hemingway" description = "Utilites for Syndicated Actors and Synit" license = "unlicense" @@ -10,4 +10,4 @@ bin = @["mintsturdyref", "mount_actor", "msg", "postgre_actor", "prese # Dependencies -requires "http://git.syndicate-lang.org/ehmry/syndicate-nim.git >= 20240408", "https://github.com/ehmry/nim-sys.git#4ef3b624db86e331ba334e705c1aa235d55b05e1", "https://git.sr.ht/~ehmry/nim_taps >= 20240405" +requires "http://git.syndicate-lang.org/ehmry/syndicate-nim.git >= 20240422", "https://github.com/ehmry/nim-sys.git#4ef3b624db86e331ba334e705c1aa235d55b05e1", "https://git.sr.ht/~ehmry/nim_taps >= 20240405"