//! Corrosion wire protocol v2 subject scheme (see PROTOCOL.md). //! //! Host-level subjects live under `corrosion.{license}.host.*`; per-instance //! subjects under `corrosion.{license}.{instance_id}.*`. Instance ids are //! validated at config load so they can never collide with the reserved //! `host` segment or contain subject metacharacters. pub fn host_heartbeat(license: &str) -> String { format!("corrosion.{license}.host.heartbeat") } pub fn host_cmd(license: &str) -> String { format!("corrosion.{license}.host.cmd") } pub fn host_going_offline(license: &str) -> String { format!("corrosion.{license}.host.going_offline") } /// Phase 1: per-instance command channel (start/stop/restart/rcon/...). #[allow(dead_code)] pub fn instance_cmd(license: &str, instance: &str) -> String { format!("corrosion.{license}.{instance}.cmd") } /// Phase 1: per-instance state-change events. #[allow(dead_code)] pub fn instance_status(license: &str, instance: &str) -> String { format!("corrosion.{license}.{instance}.status") }