pub async fn start_all(
streams: &[StreamListenerConfig],
timeouts: &TimeoutConfig,
shutdown_rx: Receiver<bool>,
) -> Result<(), String>Expand description
Binds every configured stream listener and spawns its accept/receive loop.
Binding is fail-fast: the first bind error (or invalid config) is returned
so startup can abort with a clear message. On success every listener is
bound and running in its own detached task, and this returns immediately.
Each loop stops accepting when shutdown_rx flips to true (in-flight
relays/sessions are then dropped at process exit).