#pragma once #include #include #include #include namespace sc { struct SendCommand { std::string_view target = "monitor"; // monitor, window std::string_view peer_address; // optional; empty means auto-discover int bitrate_kbps = 4000; }; struct ReceiveCommand { std::string_view peer_address; // optional, informational int local_rtp_port = 5004; int signaling_port = 5005; bool fullscreen = false; }; struct DiscoverCommand { int timeout_seconds = 3; }; using Command = std::variant; // Parse command line arguments. Prints usage and returns std::nullopt on error. // `argv` is `char const* const*` so both `main`'s `char**` and const arrays // convert implicitly. std::optional parse_cli(int argc, const char* const argv[]); } // namespace sc