diff options
author | metamuffin <metamuffin@disroot.org> | 2022-12-09 21:28:29 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-12-09 21:28:29 +0100 |
commit | 9cd8e549796bdc6b4ed574c2f4afd7ed2f8338cd (patch) | |
tree | 80b361ce0c542fedc9a0eda42540e681f5e2702c /client-native-lib/src/peer.rs | |
parent | 6a546228e6faeadca28d8289be4704985d4bda3c (diff) | |
download | keks-meet-9cd8e549796bdc6b4ed574c2f4afd7ed2f8338cd.tar keks-meet-9cd8e549796bdc6b4ed574c2f4afd7ed2f8338cd.tar.bz2 keks-meet-9cd8e549796bdc6b4ed574c2f4afd7ed2f8338cd.tar.zst |
support for tracks
Diffstat (limited to 'client-native-lib/src/peer.rs')
-rw-r--r-- | client-native-lib/src/peer.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/client-native-lib/src/peer.rs b/client-native-lib/src/peer.rs index 82c7c94..b271318 100644 --- a/client-native-lib/src/peer.rs +++ b/client-native-lib/src/peer.rs @@ -102,6 +102,34 @@ impl Peer { { let weak = Arc::<Peer>::downgrade(&peer); peer.peer_connection + .on_track(box move |track_remote, receiver| { + let receiver = receiver.unwrap(); + let track_remote = track_remote.unwrap(); + let peer = weak.upgrade().unwrap(); + Box::pin(async move { + let id = &track_remote.stream_id().await; + if let Some(res) = peer.remote_provided.read().await.get(id) { + info!("track for ({:?}) '{:?}'", res.id, res.label); + peer.inst + .event_handler + .resource_connected( + peer.clone(), + res, + TransportChannel::Track(track_remote), + ) + .await; + } else { + warn!("got unassociated track; stopping receiver"); + receiver.stop().await.unwrap(); + } + }) + }) + .await; + } + + { + let weak = Arc::<Peer>::downgrade(&peer); + peer.peer_connection .on_data_channel(box move |dc| { let peer = weak.upgrade().unwrap(); Box::pin(async move { |