kf-protocol 3.0.0

Native Rust implementation of kafka protocol
Documentation
use kf_protocol::derive::Encode;
use kf_protocol::Encoder;
use kf_protocol::EncoderVarInt;

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

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

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

#[test]
fn test_encode_recordset() {
    let mut recordset = RecordSet::default();
    let mut record = SimpleRecord::default();
    record.attributes = 10;
    record.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), 6);
}