Source code for runtimepy.sample.peer
"""
A sample peer program interface.
"""
# built-in
import asyncio
# internal
from runtimepy.net.http.header import RequestHeader
from runtimepy.net.tcp.http import HttpConnection
from runtimepy.subprocess.peer import RuntimepyPeer
[docs]
class SamplePeer(RuntimepyPeer):
"""A sample peer program."""
[docs]
async def main(self) -> None:
"""Program entry."""
# Send remote commands.
assert self.peer is not None
for cmd in [
"set a.0.really_really_long_enum very_long_member_name_3",
"set a.0.enum three",
"set -f a.0.enum three",
"set a.0.really_really_long_enum very_long_member_name_2",
]:
self.peer.command(cmd)
await self.process_command_queue()
self.struct.poll()
self.stage_remote_log("What's good %s.", "bud")
await self.wait_json({"a": 1, "b": 2, "c": 3})
await asyncio.sleep(0)
self.struct.poll()
# Query UI.
if self.peer_config is not None and "servers" in self.peer_config:
for server in self.peer_config["servers"]:
if server["factory"] == "runtimepy_http":
port = server["kwargs"]["port"]
conn = await HttpConnection.create_connection(
host="localhost", port=port
)
sig = asyncio.Event()
task = asyncio.create_task(conn.process(stop_sig=sig))
for endpoint in ["/index.html", "/app.html"]:
await conn.request(RequestHeader(target=endpoint))
sig.set()
await task