# continuum-proxy Edge gateway daemon for the Continuum print farm platform. Runs on a Linux SBC on-site, talks to printers over the LAN, and keeps a connection to the cloud control plane (`continuum-backend`). ## This is a learning-stage boilerplate This repo is deliberately minimal right now — real printer protocol clients (Bambu MQTT+FTPS, PrusaLink REST, Klipper/Moonraker WebSocket) are **not** implemented yet. Each vendor is a stub that just prints what it would do (`src/printer/bambu.rs`, `prusa.rs`, `klipper.rs`). The idea is to learn Rust's polymorphism pattern (trait + enum, since Rust has no class inheritance) on something simple before adding real networking on top. ## Getting started ```bash cp .env.example .env cargo run # the daemon: cloud uplink + go2rtc watchdog cargo run --example printer_polymorphism # standalone demo, no network/env needed ``` ## Structure ``` src/ main.rs Runs the uplink and the go2rtc watchdog side by side config.rs Loads settings from environment variables uplink/ WebSocket client to continuum-backend: connect, heartbeat, reconnect on drop printer/ Printer trait + PrinterBase + PrinterHandle enum + one stub per vendor go2rtc.rs Restarts the go2rtc camera-restreaming process if it dies examples/ printer_polymorphism.rs Runs all three printer stubs through one `connect()` call site ``` `src/printer/` is where the "inheritance" question lives — see that module's doc comment for the trait+enum pattern this project uses instead of class inheritance, and run the example above to see it work. ## What's not here yet (on purpose) - Real MQTT/FTPS/HTTP/WebSocket printer clients — `src/printer/*.rs` has a `println!` where each of these will go. - Local SQLite buffering for telemetry across connectivity gaps. - LAN printer discovery (SSDP/mDNS). - The mechanical plate-changer interface (serial/GPIO). Add these back in one at a time as you get comfortable with the Rust underneath them — each is its own small lesson (async I/O, a new crate's API, error handling for a real protocol) rather than something to absorb all at once.