Skip to main content

ticket_mesh/
ticket_mesh.rs

1//! Minimal native ticket mesh surface. The caller supplies an initialized,
2//! shared OpenRTC Client and keeps it alive for the handle's lifetime.
3
4use std::sync::Arc;
5
6use openrtc::{Client, TicketMesh, TicketMeshOptions};
7
8async fn issue(client: Arc<Client>, share_id: &str) -> anyhow::Result<String> {
9    let mesh = TicketMesh::issue(client, share_id, TicketMeshOptions { max_peers: 8 }).await?;
10    let invite = mesh.invite();
11    let mut peers = mesh.watch_peers();
12    let _connected = peers.borrow_and_update().clone();
13    mesh.close().await;
14    Ok(invite)
15}
16
17async fn join(client: Arc<Client>, invite: &str) -> anyhow::Result<()> {
18    let mesh = TicketMesh::join(client, invite).await?;
19    let mut peers = mesh.watch_peers();
20    let _connected = peers.borrow_and_update().clone();
21    mesh.close().await;
22    Ok(())
23}
24
25fn main() {
26    let _ = (issue, join);
27}