fluvio-protocol 0.50.1

Fluvio streaming protocol
Documentation
use fluvio_protocol::{Encoder, EncoderVarInt};

#[derive(Encoder)]
pub struct ByteRecord {
    attributes: i8,
}

#[test]
fn test_encode_byte_struct() {
    let rec = ByteRecord { attributes: 10 };

    let mut src = vec![];
    rec.encode(&mut src, 0).expect("encode");
    assert_eq!(src.len(), 1);
}

#[derive(Encoder, Default, Debug)]
pub struct SimpleRecord {
    #[varint]
    len: i64,
    attributes: i8,
}

#[derive(Encoder, Default, Debug)]
pub struct RecordSet {
    records: Vec<SimpleRecord>,
}

impl RecordSet {
    fn add_record(&mut self, record: SimpleRecord) {
        self.records.push(record);
    }
}

#[test]
fn test_encode_recordset() {
    let mut recordset = RecordSet::default();
    let record = SimpleRecord {
        attributes: 10,
        len: 4,
    };
    recordset.add_record(record);

    let mut src = vec![];
    let result = recordset.encode(&mut src, 0);
    assert!(result.is_ok());
    assert_eq!(src.len(), 6);
    assert_eq!(src[5], 0x0a);
    assert_eq!(recordset.write_size(0), src.len());
}