syndicate-nim/tests/solo5_relays_test.nim

40 lines
1.1 KiB
Nim
Raw Normal View History

2024-04-03 10:01:17 +00:00
# SPDX-FileCopyrightText: ☭ Emery Hemingway
# SPDX-License-Identifier: Unlicense
import taps
import solo5
import syndicate, syndicate/relays
import preserves
acquireDevices([("relay", netBasic)], netAcquireHook)
type Netif {.preservesRecord: "netif"} = object
device, ipAddr: string
2024-04-30 10:52:40 +00:00
proc spawnNetifActor(turn: Turn; ds: Cap) =
spawnActor(turn, "netif") do (turn: Turn):
2024-04-03 10:01:17 +00:00
let facet = turn.facet
onInterfaceUp do (device: string; ip: IpAddress):
2024-04-30 10:52:40 +00:00
run(facet) do (turn: Turn):
2024-04-03 10:01:17 +00:00
if not ip.isLinkLocal:
discard publish(turn, ds, Netif(device: device, ipAddr: $ip))
2024-04-30 10:52:40 +00:00
runActor("relay-test") do (turn: Turn):
2024-04-03 10:01:17 +00:00
let root = turn.facet
2024-04-30 10:52:40 +00:00
onStop(turn) do (turn: Turn):
2024-04-03 10:01:17 +00:00
quit()
let ds = newDataspace(turn)
spawnNetifActor(turn, ds)
spawnRelays(turn, ds)
var
route: Route
pr = parsePreserves $solo5_start_info.cmdline
if route.fromPreserves pr:
echo "parsed route ", route.toPreserves
during(turn, ds, Netif?:{1: grab()}) do (ip: string):
echo "Acquired address ", ip
2024-04-30 10:52:40 +00:00
resolve(turn, ds, route) do (turn: Turn; ds: Cap):
2024-04-03 10:01:17 +00:00
echo "route resolved!"
echo "stopping root facet"
stop(turn, root)