use axum::extract::ws::Message;
use polysig_protocol::MeetingId;
use std::path::PathBuf;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error(r#"not a file "{0}""#)]
NotFile(PathBuf),
#[error("permission denied")]
PermissionDenied,
#[error("no parent directory")]
NoParentDir,
#[error(r#"meeting "{0}" not found"#)]
MeetingNotFound(MeetingId),
#[error(r#"meeting "{0}" is full"#)]
MeetingFull(MeetingId),
#[error("session timeout must be greater than the interval")]
SessionTimeoutConfig,
#[error(transparent)]
Io(#[from] std::io::Error),
#[error(transparent)]
Json(#[from] serde_json::Error),
#[error(transparent)]
Protocol(#[from] polysig_protocol::Error),
#[error(transparent)]
Axum(#[from] axum::Error),
#[error(transparent)]
Toml(#[from] toml::de::Error),
#[error(transparent)]
HeaderValue(#[from] axum::http::header::InvalidHeaderValue),
#[error(transparent)]
BufferMpscSend(
#[from] tokio::sync::mpsc::error::SendError<Vec<u8>>,
),
#[error(transparent)]
MessageMpscSend(
#[from] tokio::sync::mpsc::error::SendError<Message>,
),
}