diff options
author | metamuffin <metamuffin@disroot.org> | 2022-10-07 23:25:39 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-10-07 23:25:39 +0200 |
commit | 1d23f7b835ec6714cda248981e642c48fc551dce (patch) | |
tree | 8f2f37269598e7d7fdf42d511c1eae7bea30c47a /client-native-lib/src/instance.rs | |
parent | 0b75a0609e65a4d09e12d9f8466d6ece52869a94 (diff) | |
download | keks-meet-1d23f7b835ec6714cda248981e642c48fc551dce.tar keks-meet-1d23f7b835ec6714cda248981e642c48fc551dce.tar.bz2 keks-meet-1d23f7b835ec6714cda248981e642c48fc551dce.tar.zst |
transport works.
Diffstat (limited to 'client-native-lib/src/instance.rs')
-rw-r--r-- | client-native-lib/src/instance.rs | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/client-native-lib/src/instance.rs b/client-native-lib/src/instance.rs index b3688c3..cd720f1 100644 --- a/client-native-lib/src/instance.rs +++ b/client-native-lib/src/instance.rs @@ -18,7 +18,7 @@ use tokio::sync::RwLock; use webrtc::api::API; pub struct Instance { - pub event_handler: Box<dyn EventHandler>, + pub event_handler: Arc<dyn EventHandler>, pub conn: SignalingConnection, pub config: Config, pub api: API, @@ -28,7 +28,7 @@ pub struct Instance { pub peers: RwLock<HashMap<usize, Arc<Peer>>>, } impl Instance { - pub async fn new(config: Config, event_handler: Box<dyn EventHandler>) -> Arc<Self> { + pub async fn new(config: Config, event_handler: Arc<dyn EventHandler>) -> Arc<Self> { let conn = signaling::SignalingConnection::new(&config.signaling_uri, &config.secret).await; let key = crypto::Key::derive(&config.secret); @@ -72,16 +72,13 @@ impl Instance { username: self.config.username.clone(), }) .await; + self.event_handler.peer_join(peer).await; } } protocol::ClientboundPacket::ClientLeave { id } => { - self.peers - .write() - .await - .remove(&id) - .unwrap() - .on_leave() - .await; + let peer = self.peers.write().await.remove(&id).unwrap(); + peer.on_leave().await; + self.event_handler.peer_leave(peer).await; } protocol::ClientboundPacket::Message { sender, message } => { let message = self.key.decrypt(&message); |