kacrab_protocol/record/
header.rs1use bytes::{Bytes, BytesMut};
4
5use super::Result;
6
7#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct RecordHeader {
10 pub key: Bytes,
12 pub value: Option<Bytes>,
14}
15
16impl RecordHeader {
17 pub fn encoded_len(&self) -> Result<usize> {
19 let len = super::bytes_field_len("header key", &self.key)?;
20 super::add_encoded_len(
21 "header value",
22 len,
23 super::nullable_bytes_field_len("header value", self.value.as_ref())?,
24 )
25 }
26
27 pub fn encode(&self, buf: &mut BytesMut) -> Result<()> {
29 super::write_bytes_field(buf, "header key", &self.key)?;
30 super::write_nullable_bytes_field(buf, "header value", self.value.as_ref())?;
31 Ok(())
32 }
33
34 pub fn decode(buf: &mut Bytes) -> Result<Self> {
36 let key = super::read_bytes_field(buf, "header key")?;
37 let value = super::read_nullable_bytes_field(buf, "header value")?;
38
39 Ok(Self { key, value })
40 }
41}