zookeeper-client 0.2.0

ZooKeeper async client
Documentation
use num_enum::{IntoPrimitive, TryFromPrimitive, TryFromPrimitiveError};

use crate::error::Error;

impl From<ErrorCode> for Error {
    fn from(ec: ErrorCode) -> Error {
        use ErrorCode::*;
        match ec {
            Ok => Error::UnexpectedError("error code 0 is treated as error".to_string()),
            MarshallingError => Error::MarshallingError,
            Unimplemented => Error::Unimplemented,
            BadArguments => Error::BadArguments(&"server error"),
            NoNode => Error::NoNode,
            NoAuth => Error::NoAuth,
            BadVersion => Error::BadVersion,
            NoChildrenForEphemerals => Error::NoChildrenForEphemerals,
            NodeExists => Error::NodeExists,
            NotEmpty => Error::NotEmpty,
            SessionExpired => Error::SessionExpired,
            InvalidAcl => Error::InvalidAcl,
            AuthFailed | SessionClosedRequireSaslAuth => Error::AuthFailed,
            SessionMoved => Error::SessionMoved,
            NotReadOnly => Error::NotReadOnly,
            NoWatcher => Error::NoWatcher,
            ReconfigDisabled => Error::ReconfigDisabled,
            QuotaExceeded => Error::QuotaExceeded,
            Throttled => Error::Throttled,
        }
    }
}

#[repr(i32)]
#[derive(Copy, Clone, Debug, PartialEq, Eq, IntoPrimitive, TryFromPrimitive)]
pub enum ErrorCode {
    Ok = 0,
    MarshallingError = -5,
    Unimplemented = -6,
    BadArguments = -8,
    NoNode = -101,
    NoAuth = -102,
    BadVersion = -103,
    NoChildrenForEphemerals = -108,
    NodeExists = -110,
    NotEmpty = -111,
    SessionExpired = -112,
    InvalidAcl = -114,
    AuthFailed = -115,
    SessionMoved = -118,
    NotReadOnly = -119,
    NoWatcher = -122,
    ReconfigDisabled = -123,
    SessionClosedRequireSaslAuth = -124,
    QuotaExceeded = -125,
    Throttled = -127,
}

impl From<TryFromPrimitiveError<ErrorCode>> for Error {
    fn from(err: TryFromPrimitiveError<ErrorCode>) -> Error {
        Error::UnexpectedErrorCode(err.number)
    }
}