zookeeper-client 0.11.1

ZooKeeper async client
Documentation
use bytes::BufMut;

use crate::record::{ReadingBuf, SerializableRecord, StaticRecord, UnsafeBuf, UnsafeRead};

#[derive(Copy, Clone, Debug)]
pub struct ReplyHeader {
    pub xid: i32,
    pub zxid: i64,
    pub err: i32,
}

impl SerializableRecord for ReplyHeader {
    fn serialize(&self, buf: &mut dyn BufMut) {
        buf.put_i32(self.xid);
        buf.put_i64(self.zxid);
        buf.put_i32(self.err);
    }
}

impl StaticRecord for ReplyHeader {
    fn record_len() -> usize {
        16
    }
}

impl UnsafeRead<'_> for ReplyHeader {
    type Error = std::convert::Infallible;

    unsafe fn read(buf: &mut ReadingBuf) -> Result<Self, Self::Error> {
        let xid = buf.get_unchecked_i32();
        let zxid = buf.get_unchecked_i64();
        let err = buf.get_unchecked_i32();
        Ok(ReplyHeader { xid, zxid, err })
    }
}