aboutsummaryrefslogtreecommitdiff
path: root/client-native-lib/src/instance.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-10-07 23:25:39 +0200
committermetamuffin <metamuffin@disroot.org>2022-10-07 23:25:39 +0200
commit1d23f7b835ec6714cda248981e642c48fc551dce (patch)
tree8f2f37269598e7d7fdf42d511c1eae7bea30c47a /client-native-lib/src/instance.rs
parent0b75a0609e65a4d09e12d9f8466d6ece52869a94 (diff)
downloadkeks-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.rs15
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);