use medea_client_api_proto as proto;
#[cfg(doc)]
use medea_client_api_proto::IceConnectionState;
#[cfg(target_family = "wasm")]
use wasm_bindgen::prelude::wasm_bindgen;
use crate::rpc::ClientDisconnect;
#[cfg(doc)]
use crate::{api::RoomCloseReason, peer::PeerConnection};
#[cfg_attr(target_family = "wasm", wasm_bindgen)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum RoomCloseKind {
InternalClientError,
InternalServerError,
Finished,
Idle,
Rejected,
Evicted,
}
impl From<proto::CloseReason> for RoomCloseKind {
fn from(val: proto::CloseReason) -> Self {
match val {
proto::CloseReason::Finished => Self::Finished,
proto::CloseReason::Idle => Self::Idle,
proto::CloseReason::Rejected => Self::Rejected,
proto::CloseReason::Evicted => Self::Evicted,
proto::CloseReason::Reconnected
| proto::CloseReason::InternalError => Self::InternalServerError,
}
}
}
impl From<ClientDisconnect> for RoomCloseKind {
fn from(val: ClientDisconnect) -> Self {
match val {
ClientDisconnect::CloseForReconnection
| ClientDisconnect::RoomUnexpectedlyDropped
| ClientDisconnect::RpcClientUnexpectedlyDropped
| ClientDisconnect::RpcTransportUnexpectedlyDropped
| ClientDisconnect::SessionUnexpectedlyDropped => {
Self::InternalClientError
}
ClientDisconnect::RoomClosed => Self::Finished,
}
}
}
#[cfg_attr(target_family = "wasm", wasm_bindgen)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum PeerConnectionState {
New,
Connecting,
Connected,
Disconnected,
Failed,
Closed,
}
impl From<proto::PeerConnectionState> for PeerConnectionState {
fn from(r: proto::PeerConnectionState) -> Self {
match r {
proto::PeerConnectionState::New => Self::New,
proto::PeerConnectionState::Connecting => Self::Connecting,
proto::PeerConnectionState::Connected => Self::Connected,
proto::PeerConnectionState::Disconnected => Self::Disconnected,
proto::PeerConnectionState::Failed => Self::Failed,
proto::PeerConnectionState::Closed => Self::Closed,
}
}
}
#[cfg_attr(target_family = "wasm", wasm_bindgen)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum LogLevel {
Error,
Warn,
Info,
Debug,
}
impl From<LogLevel> for log::LevelFilter {
fn from(value: LogLevel) -> Self {
match value {
LogLevel::Error => Self::Error,
LogLevel::Warn => Self::Warn,
LogLevel::Info => Self::Info,
LogLevel::Debug => Self::Debug,
}
}
}