polysig-meeting-server 0.8.0

Meeting rooms for the polysig library
Documentation
use axum::extract::ws::Message;
use polysig_protocol::MeetingId;
use std::path::PathBuf;
use thiserror::Error;

/// Errors generated by the relay server.
#[derive(Debug, Error)]
pub enum Error {
    /// Error generated when a file is expected.
    #[error(r#"not a file "{0}""#)]
    NotFile(PathBuf),

    /// Error generated when permission is denied.
    #[error("permission denied")]
    PermissionDenied,

    /// Error generated when a file does not have a parent directory.
    #[error("no parent directory")]
    NoParentDir,

    /// Error generated when a meeting could not be found.
    #[error(r#"meeting "{0}" not found"#)]
    MeetingNotFound(MeetingId),

    /// Error generated when a participant attempts to join a meeting
    /// that is full.
    #[error(r#"meeting "{0}" is full"#)]
    MeetingFull(MeetingId),

    /// Error generated when the session timeout is not greater
    /// than the interval.
    #[error("session timeout must be greater than the interval")]
    SessionTimeoutConfig,

    /// Error generated by input/output.
    #[error(transparent)]
    Io(#[from] std::io::Error),

    /// Error generated by JSON library.
    #[error(transparent)]
    Json(#[from] serde_json::Error),

    /// Error generated by the protocol library.
    #[error(transparent)]
    Protocol(#[from] polysig_protocol::Error),

    /// Error generated by the web server library.
    #[error(transparent)]
    Axum(#[from] axum::Error),

    /// Error generated parsing TOML.
    #[error(transparent)]
    Toml(#[from] toml::de::Error),

    /// Error generated when a header value is invalid.
    #[error(transparent)]
    HeaderValue(#[from] axum::http::header::InvalidHeaderValue),

    /// Error generated sending a buffer over a channel.
    #[error(transparent)]
    BufferMpscSend(
        #[from] tokio::sync::mpsc::error::SendError<Vec<u8>>,
    ),

    /// Error generated sending a message over a channel.
    #[error(transparent)]
    MessageMpscSend(
        #[from] tokio::sync::mpsc::error::SendError<Message>,
    ),
}