use crate::Publish;
use hang::moq_lite;
use url::Url;
pub async fn run_client(client: moq_native::Client, url: Url, name: String, publish: Publish) -> anyhow::Result<()> {
let origin = moq_lite::Origin::random().produce();
origin.publish_broadcast(&name, publish.consume());
tracing::info!(%url, %name, "connecting");
let reconnect = client.with_publish(origin.consume()).reconnect(url);
#[cfg(unix)]
let _ = sd_notify::notify(&[sd_notify::NotifyState::Ready]);
tokio::select! {
res = publish.run() => res,
res = reconnect.closed() => res,
_ = tokio::signal::ctrl_c() => Ok(()),
}
}