2023-04-11 10:27:36 +02:00

65 lines
1.8 KiB
Python

import sys
import threading
import time
from queue import Empty, Queue
from phasmplatform.common import valuetype
from phasmplatform.common.config import from_toml
from phasmplatform.common.method import Method, MethodCall
from phasmplatform.common.router import StdOutRouter
from .runners.base import RunnerInterface
from .runners.wasmtime import WasmTimeRunner
def runner_thread(runner: RunnerInterface, queue: Queue[MethodCall]) -> None:
while True:
try:
call = queue.get(block=True, timeout=1)
except Empty:
break
runner.do_call(call)
def main() -> int:
with open('config.toml', 'rb') as fil:
config = from_toml(fil)
del config
stdout_router = StdOutRouter()
with open('/home/johan/projects/idea/phasm/examples/echoclient.wasm', 'rb') as fil:
echo_client = WasmTimeRunner(stdout_router, fil.read())
with open('/home/johan/projects/idea/phasm/examples/echoserver.wasm', 'rb') as fil:
echo_server = WasmTimeRunner(stdout_router, fil.read())
on_module_loaded = MethodCall(
Method('on_module_loaded', [], valuetype.none),
[],
lambda x: None,
lambda x: None, # TODO: Check for MethodNotFoundError, otherwise report it
)
echo_client_queue: Queue[MethodCall] = Queue()
echo_client_queue.put(on_module_loaded)
echo_server_queue: Queue[MethodCall] = Queue()
echo_server_queue.put(on_module_loaded)
echo_client_thread = threading.Thread(target=runner_thread, args=(echo_client, echo_client_queue))
echo_server_thread = threading.Thread(target=runner_thread, args=(echo_server, echo_server_queue))
echo_client_thread.start()
echo_server_thread.start()
time.sleep(3)
return 0
if __name__ == '__main__':
sys.exit(main())