
Release Notes: - N/A --------- Co-authored-by: localcc <work@localcc.cc> Co-authored-by: Peter Tripp <petertripp@gmail.com>
145 lines
3.8 KiB
Rust
145 lines
3.8 KiB
Rust
use collections::HashMap;
|
|
|
|
mod remote_video_track_view;
|
|
pub use remote_video_track_view::{RemoteVideoTrackView, RemoteVideoTrackViewEvent};
|
|
|
|
#[cfg(not(any(test, feature = "test-support", target_os = "freebsd")))]
|
|
mod livekit_client;
|
|
#[cfg(not(any(test, feature = "test-support", target_os = "freebsd")))]
|
|
pub use livekit_client::*;
|
|
|
|
#[cfg(any(test, feature = "test-support", target_os = "freebsd"))]
|
|
mod mock_client;
|
|
#[cfg(any(test, feature = "test-support", target_os = "freebsd"))]
|
|
pub mod test;
|
|
#[cfg(any(test, feature = "test-support", target_os = "freebsd"))]
|
|
pub use mock_client::*;
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub enum Participant {
|
|
Local(LocalParticipant),
|
|
Remote(RemoteParticipant),
|
|
}
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub enum TrackPublication {
|
|
Local(LocalTrackPublication),
|
|
Remote(RemoteTrackPublication),
|
|
}
|
|
|
|
impl TrackPublication {
|
|
pub fn sid(&self) -> TrackSid {
|
|
match self {
|
|
TrackPublication::Local(local) => local.sid(),
|
|
TrackPublication::Remote(remote) => remote.sid(),
|
|
}
|
|
}
|
|
|
|
pub fn is_muted(&self) -> bool {
|
|
match self {
|
|
TrackPublication::Local(local) => local.is_muted(),
|
|
TrackPublication::Remote(remote) => remote.is_muted(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Clone, Debug)]
|
|
pub enum RemoteTrack {
|
|
Audio(RemoteAudioTrack),
|
|
Video(RemoteVideoTrack),
|
|
}
|
|
|
|
impl RemoteTrack {
|
|
pub fn sid(&self) -> TrackSid {
|
|
match self {
|
|
RemoteTrack::Audio(remote_audio_track) => remote_audio_track.sid(),
|
|
RemoteTrack::Video(remote_video_track) => remote_video_track.sid(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Clone, Debug)]
|
|
pub enum LocalTrack {
|
|
Audio(LocalAudioTrack),
|
|
Video(LocalVideoTrack),
|
|
}
|
|
|
|
#[derive(Clone, Debug)]
|
|
#[non_exhaustive]
|
|
pub enum RoomEvent {
|
|
ParticipantConnected(RemoteParticipant),
|
|
ParticipantDisconnected(RemoteParticipant),
|
|
LocalTrackPublished {
|
|
publication: LocalTrackPublication,
|
|
track: LocalTrack,
|
|
participant: LocalParticipant,
|
|
},
|
|
LocalTrackUnpublished {
|
|
publication: LocalTrackPublication,
|
|
participant: LocalParticipant,
|
|
},
|
|
LocalTrackSubscribed {
|
|
track: LocalTrack,
|
|
},
|
|
TrackSubscribed {
|
|
track: RemoteTrack,
|
|
publication: RemoteTrackPublication,
|
|
participant: RemoteParticipant,
|
|
},
|
|
TrackUnsubscribed {
|
|
track: RemoteTrack,
|
|
publication: RemoteTrackPublication,
|
|
participant: RemoteParticipant,
|
|
},
|
|
TrackSubscriptionFailed {
|
|
participant: RemoteParticipant,
|
|
// error: livekit::track::TrackError,
|
|
track_sid: TrackSid,
|
|
},
|
|
TrackPublished {
|
|
publication: RemoteTrackPublication,
|
|
participant: RemoteParticipant,
|
|
},
|
|
TrackUnpublished {
|
|
publication: RemoteTrackPublication,
|
|
participant: RemoteParticipant,
|
|
},
|
|
TrackMuted {
|
|
participant: Participant,
|
|
publication: TrackPublication,
|
|
},
|
|
TrackUnmuted {
|
|
participant: Participant,
|
|
publication: TrackPublication,
|
|
},
|
|
RoomMetadataChanged {
|
|
old_metadata: String,
|
|
metadata: String,
|
|
},
|
|
ParticipantMetadataChanged {
|
|
participant: Participant,
|
|
old_metadata: String,
|
|
metadata: String,
|
|
},
|
|
ParticipantNameChanged {
|
|
participant: Participant,
|
|
old_name: String,
|
|
name: String,
|
|
},
|
|
ParticipantAttributesChanged {
|
|
participant: Participant,
|
|
changed_attributes: HashMap<String, String>,
|
|
},
|
|
ActiveSpeakersChanged {
|
|
speakers: Vec<Participant>,
|
|
},
|
|
ConnectionStateChanged(ConnectionState),
|
|
Connected {
|
|
participants_with_tracks: Vec<(RemoteParticipant, Vec<RemoteTrackPublication>)>,
|
|
},
|
|
Disconnected {
|
|
reason: &'static str,
|
|
},
|
|
Reconnecting,
|
|
Reconnected,
|
|
}
|