rtipc 0.5.1

Real-Time IPC, based on a zero-copy, wait-free circular message queue implementation
Documentation
use nix::errno::Errno;

#[derive(Debug)]
pub enum ShmMapError {
    OutOfBounds,
    Misalignment,
}

#[derive(Debug)]
pub enum HeaderError {
    SizeExceedsRequest,
    MagicMismatch,
    VersionMismatch,
    CachelineSizeMismatch,
    AtomicSizeMismatch,
}

#[derive(Debug)]
pub enum ResourceError {
    InvalidArgument,
    Errno(Errno),
    ShmMapError(ShmMapError),
}

#[derive(Debug)]
pub enum RequestError {
    OutOfBounds,
    HeaderError(HeaderError),
}

#[derive(Debug)]
pub enum TransferError {
    ResourceError(ResourceError),
    RequestError(RequestError),
    MissingFileDescriptor,
    Rejected,
    ResponseError,
}

impl From<Errno> for ResourceError {
    fn from(e: Errno) -> ResourceError {
        ResourceError::Errno(e)
    }
}

impl From<ShmMapError> for ResourceError {
    fn from(e: ShmMapError) -> ResourceError {
        ResourceError::ShmMapError(e)
    }
}

impl From<ResourceError> for TransferError {
    fn from(e: ResourceError) -> TransferError {
        TransferError::ResourceError(e)
    }
}

impl From<Errno> for TransferError {
    fn from(e: Errno) -> TransferError {
        TransferError::ResourceError(ResourceError::Errno(e))
    }
}

impl From<RequestError> for TransferError {
    fn from(e: RequestError) -> TransferError {
        TransferError::RequestError(e)
    }
}

impl From<HeaderError> for RequestError {
    fn from(e: HeaderError) -> RequestError {
        RequestError::HeaderError(e)
    }
}