Files
netris-nestri/apps/neshub/Cargo.toml
Wanjohi 3c574af2ea feat(neshub): open the media hub
The component nescapture, neswire and nescope all talk to, and the only
thing in the guest that speaks to the client. It muxes their frames into
one iroh QUIC endpoint and fans input back.

Renamed from nestri-guest-hub, which named a location rather than a job.

Four files came across unchanged -- session.rs, ipc_listener.rs,
ticket.rs, screenshot.rs. Between them they mention Steam zero times, and
they import only nesprotocol's open modules; the control feature carrying
LaunchIntent and SteamIdentity is used exclusively by the three files that
are staying closed. The two clusters shared a main.rs and nothing else, so
there was no untangling to do -- only a cut.

main.rs loses --proton, --steamclient-so, --root and the game uid/gid,
and no longer ends by handing the process to a controller. It runs until
it is stopped. Deciding when the box is finished belongs to nesinit.

The ticket used to leave via that controller, so it needed a new way out:
neshub now serves it on a socket and nesinit dials for it. Listening
rather than dialling matches every other socket here and means no startup
ordering to get wrong.

Three tests, where there were none -- the ticket crosses a process
boundary as text now, so a round trip that drops a field would otherwise
be found by whoever cannot connect.
2026-08-26 18:54:09 +03:00

30 lines
680 B
TOML

[package]
name = "neshub"
version = "0.1.0"
description = "Muxes captured video, audio and input into one QUIC connection to the client"
edition.workspace = true
license.workspace = true
repository.workspace = true
[[bin]]
name = "neshub"
path = "src/main.rs"
[dependencies]
# The transport. One endpoint per box; clients dial it with a ticket.
iroh = "1.0.0"
anyhow.workspace = true
clap.workspace = true
libc.workspace = true
serde.workspace = true
serde_json.workspace = true
tokio.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
base64 = "0.22"
uuid = { version = "1", features = ["v7"] }
nesprotocol = { path = "../../crates/nesprotocol" }