DataReceived event

This commit is contained in:
Théo Monnom
2022-12-28 02:19:40 +01:00
parent ac725bb29a
commit 4135ef30cc
5 changed files with 72 additions and 5 deletions
+28
View File
@@ -1,7 +1,10 @@
use self::room_session::{ConnectionState, RoomSession, SessionHandle};
use crate::proto::data_packet;
use crate::room::id::TrackSid;
use crate::room::participant::remote_participant::RemoteParticipant;
use crate::room::participant::ParticipantHandle;
use crate::room::publication::RemoteTrackPublication;
use crate::room::publication::TrackPublication;
use crate::room::track::remote_track::RemoteTrackHandle;
use crate::rtc_engine::EngineError;
use std::fmt::Debug;
@@ -48,11 +51,36 @@ pub enum RoomEvent {
publication: RemoteTrackPublication,
participant: Arc<RemoteParticipant>,
},
TrackUnpublished {
publication: RemoteTrackPublication,
participant: Arc<RemoteParticipant>,
},
TrackUnsubscribed {
track: RemoteTrackHandle,
publication: RemoteTrackPublication,
participant: Arc<RemoteParticipant>,
},
TrackSubscriptionFailed {
error: TrackError,
sid: TrackSid,
participant: Arc<RemoteParticipant>,
},
TrackMuted {
publication: TrackPublication,
participant: ParticipantHandle,
},
TrackUnmuted {
publication: TrackPublication,
participant: ParticipantHandle,
},
ActiveSpeakersChanged {
speakers: Vec<ParticipantHandle>,
},
DataReceived {
payload: Vec<u8>,
kind: data_packet::Kind,
participant: Arc<RemoteParticipant>,
},
ConnectionStateChanged(ConnectionState),
Connected,
Disconnected,
@@ -63,7 +63,7 @@ pub trait ParticipantTrait {
fn metadata(&self) -> String;
}
#[derive(Clone)]
#[derive(Debug, Clone)]
pub enum ParticipantHandle {
Local(Arc<LocalParticipant>),
Remote(Arc<RemoteParticipant>),
@@ -283,6 +283,21 @@ impl SessionInner {
EngineEvent::Restarting => self.handle_restarting(),
EngineEvent::Restarted => self.handle_restarted(),
EngineEvent::Disconnected => self.handle_disconnected(),
EngineEvent::Data {
payload,
kind,
participant_sid,
} => {
if let Some(participant) = self.get_participant(&participant_sid.into()) {
let _ = self
.internal_tx
.send(SessionEvent::Room(RoomEvent::DataReceived {
payload,
kind,
participant,
}));
}
}
}
Ok(())