Test sort of works
This commit is contained in:
parent
29b43eaced
commit
5fe1b7a70d
|
@ -3,23 +3,29 @@
|
||||||
|
|
||||||
import std/[asyncdispatch, asyncfile, random, strutils]
|
import std/[asyncdispatch, asyncfile, random, strutils]
|
||||||
import preserves, preserves/parse
|
import preserves, preserves/parse
|
||||||
import syndicate/protocols/[simpleChatProtocol, sturdy]
|
import syndicate/protocols/[simpleChatProtocol]
|
||||||
import syndicate/[actors, dataspaces, patterns, relay]
|
import syndicate/[actors, capabilities, dataspaces, patterns, relay]
|
||||||
|
|
||||||
from syndicate/protocols/protocol import Handle
|
from syndicate/protocols/protocol import Handle
|
||||||
|
|
||||||
from os import getCurrentProcessId
|
from os import getCurrentProcessId
|
||||||
|
|
||||||
randomize()
|
when defined(linux):
|
||||||
|
proc getentropy(buf: pointer; bufLen: csize_t): cint {.
|
||||||
|
importc, header: "sys/random.h".}
|
||||||
|
|
||||||
const capStr = """<ref "syndicate" [] #x"a6480df5306611ddd0d3882b546e1977">"""
|
proc mint(): SturdyRef =
|
||||||
|
#var key: array[16, byte]
|
||||||
|
#doAssert getEntropy(addr key[0], csize_t key.len) == 0
|
||||||
|
#mint(key, "syndicate")
|
||||||
|
let pr = parsePreserves("""<ref "syndicate" [] #x"a6480df5306611ddd0d3882b546e1977">""", Ref)
|
||||||
|
assert fromPreserve(result, pr)
|
||||||
|
|
||||||
proc noOp(turn: var Turn) = discard
|
proc noOp(turn: var Turn) = discard
|
||||||
|
|
||||||
waitFor runActor("chat") do (turn: var Turn):
|
waitFor runActor("chat") do (turn: var Turn):
|
||||||
|
|
||||||
var cap: SturdyRef[Ref]
|
let cap = mint()
|
||||||
doAssert fromPreserve(cap, parsePreserves(capStr, Ref))
|
|
||||||
|
|
||||||
connectUnix(turn, "/run/syndicate/ds", cap) do (turn: var Turn; a: Assertion) -> TurnAction:
|
connectUnix(turn, "/run/syndicate/ds", cap) do (turn: var Turn; a: Assertion) -> TurnAction:
|
||||||
let ds = unembed a
|
let ds = unembed a
|
||||||
|
@ -29,17 +35,29 @@ waitFor runActor("chat") do (turn: var Turn):
|
||||||
|
|
||||||
proc updateUsername(turn: var Turn; u: string) =
|
proc updateUsername(turn: var Turn; u: string) =
|
||||||
username = u
|
username = u
|
||||||
|
var p = Present(username: username)
|
||||||
usernameHandle = replace(turn, ds,
|
usernameHandle = replace(turn, ds,
|
||||||
usernameHandle, Present(username: username))
|
usernameHandle, p)
|
||||||
|
|
||||||
updateUsername(turn, "user" & $getCurrentProcessId())
|
updateUsername(turn, "user" & $getCurrentProcessId())
|
||||||
echo "username updated?"
|
|
||||||
|
|
||||||
proc duringPresent(turn: var Turn; a: Assertion): TurnAction =
|
proc duringPresent(turn: var Turn; v: Assertion): TurnAction =
|
||||||
echo "observed ", a
|
var a: tuple[username: string]
|
||||||
noOp
|
assert fromPreserve(a, v), $v
|
||||||
|
echo a.username, " arrived"
|
||||||
|
proc onRetract(turn: var Turn) =
|
||||||
|
echo a.username, " left"
|
||||||
|
onRetract
|
||||||
|
|
||||||
discard observe(turn, ds, toPattern(Present), during(duringPresent))
|
discard observe(turn, ds, toPattern(Present), during(duringPresent))
|
||||||
|
|
||||||
echo "post-observe"
|
discard observe(turn, ds, toPattern(Says), newEntity(
|
||||||
|
message = proc (e: Entity; turn: var Turn; v: Assertion) =
|
||||||
|
var msg: tuple[who: string, what: string]
|
||||||
|
assert fromPreserve(msg, v), $v
|
||||||
|
echo msg.who, ": ", msg.what
|
||||||
|
))
|
||||||
|
|
||||||
|
message(turn, ds, Says(who: username, what: "hello"))
|
||||||
|
|
||||||
echo "actor completed"
|
echo "actor completed"
|
||||||
|
|
Loading…
Reference in New Issue