///|
/// Per-WebSocket state. Exists only while a relay session is connected
/// — `BridgeState.current` holds `Some(self)` during a session and
/// `None` between sessions. Collapses today's peer-level
/// `send_queue_ref` and `clients` refs into one struct so "connected
/// or not" is a single check.
struct RelaySession {
  send_queue : @aqueue.Queue[String]
  clients : Map[String, Unit]
}

///|
fn RelaySession::new() -> RelaySession {
  { send_queue: @aqueue.Queue::new(kind=Unbounded), clients: {} }
}