ntgcalls 3.0.0-beta12

A Library for creating group calls and P2P calls with WebRTC and MTProto
// @generated from schema/ntgcalls.ntl -- DO NOT EDIT
use ntgcalls_sys as sys;

#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Error {
    Rtc,
    SdpParse,
    TransportParse,
    RtmpStreamingUnsupported,
    Connection,
    ConnectionNotFound,
    ConnectionError,
    CryptoError,
    TelegramServerError,
    RtcConnectionNeeded,
    InvalidParams,
    Signaling,
    SignalingError,
    SignalingUnsupported,
    Media,
    FileError,
    FfmpegError,
    ShellError,
    MediaDeviceError,
    Unknown(i32),
}

impl std::fmt::Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{self:?}")
    }
}

impl std::error::Error for Error {}

pub type Result<T> = std::result::Result<T, Error>;

pub(crate) fn check(code: sys::ntg_result) -> Result<()> {
    match code {
        sys::NTG_OK => Ok(()),
        sys::NTG_ERR_RTC => Err(Error::Rtc),
        sys::NTG_ERR_SDP_PARSE => Err(Error::SdpParse),
        sys::NTG_ERR_TRANSPORT_PARSE => Err(Error::TransportParse),
        sys::NTG_ERR_RTMP_STREAMING_UNSUPPORTED => Err(Error::RtmpStreamingUnsupported),
        sys::NTG_ERR_CONNECTION => Err(Error::Connection),
        sys::NTG_ERR_CONNECTION_NOT_FOUND => Err(Error::ConnectionNotFound),
        sys::NTG_ERR_CONNECTION_ERROR => Err(Error::ConnectionError),
        sys::NTG_ERR_CRYPTO_ERROR => Err(Error::CryptoError),
        sys::NTG_ERR_TELEGRAM_SERVER_ERROR => Err(Error::TelegramServerError),
        sys::NTG_ERR_RTC_CONNECTION_NEEDED => Err(Error::RtcConnectionNeeded),
        sys::NTG_ERR_INVALID_PARAMS => Err(Error::InvalidParams),
        sys::NTG_ERR_SIGNALING => Err(Error::Signaling),
        sys::NTG_ERR_SIGNALING_ERROR => Err(Error::SignalingError),
        sys::NTG_ERR_SIGNALING_UNSUPPORTED => Err(Error::SignalingUnsupported),
        sys::NTG_ERR_MEDIA => Err(Error::Media),
        sys::NTG_ERR_FILE_ERROR => Err(Error::FileError),
        sys::NTG_ERR_FFMPEG_ERROR => Err(Error::FfmpegError),
        sys::NTG_ERR_SHELL_ERROR => Err(Error::ShellError),
        sys::NTG_ERR_MEDIA_DEVICE_ERROR => Err(Error::MediaDeviceError),
        other => Err(Error::Unknown(other)),
    }
}