use bytes::{Bytes, BytesMut};
use super::Result;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RecordHeader {
pub key: Bytes,
pub value: Option<Bytes>,
}
impl RecordHeader {
pub fn encoded_len(&self) -> Result<usize> {
let len = super::bytes_field_len("header key", &self.key)?;
super::add_encoded_len(
"header value",
len,
super::nullable_bytes_field_len("header value", self.value.as_ref())?,
)
}
pub fn encode(&self, buf: &mut BytesMut) -> Result<()> {
super::write_bytes_field(buf, "header key", &self.key)?;
super::write_nullable_bytes_field(buf, "header value", self.value.as_ref())?;
Ok(())
}
pub fn decode(buf: &mut Bytes) -> Result<Self> {
let key = super::read_bytes_field(buf, "header key")?;
let value = super::read_nullable_bytes_field(buf, "header value")?;
Ok(Self { key, value })
}
}