takproto 0.4.2

Rust library for TAK (Team Awareness Kit) Protocol - send CoT messages to TAK servers with mTLS support
Documentation
use thiserror::Error;

/// Result type for TAK operations
pub type Result<T> = std::result::Result<T, TakError>;

/// Errors that can occur when working with TAK protocol
#[derive(Error, Debug)]
pub enum TakError {
    /// IO error occurred
    #[error("IO error: {0}")]
    Io(#[from] std::io::Error),

    /// Protocol buffer decoding error
    #[error("Protocol buffer decode error: {0}")]
    ProstDecode(#[from] prost::DecodeError),

    /// Protocol buffer encoding error
    #[error("Protocol buffer encode error: {0}")]
    ProstEncode(#[from] prost::EncodeError),

    /// Invalid varint encoding
    #[error("Invalid varint encoding")]
    InvalidVarint,

    /// Connection closed unexpectedly
    #[error("Connection closed")]
    ConnectionClosed,

    /// Protocol negotiation failed
    #[error("Protocol negotiation failed: {0}")]
    NegotiationFailed(String),

    /// Invalid message format
    #[error("Invalid message format: {0}")]
    InvalidMessage(String),

    /// TLS error
    #[error("TLS error: {0}")]
    Tls(String),

    /// Certificate error
    #[error("Certificate error: {0}")]
    Certificate(String),
}

impl From<rustls::Error> for TakError {
    fn from(err: rustls::Error) -> Self {
        TakError::Tls(err.to_string())
    }
}