kafkaesque 0.0.15

Kafka implementations in Rust (Unofficial)
Documentation
use crate::formats::api_keys::ApiKey;
use crate::formats::codec::{Read, Write};
use crate::formats::error_code::ErrorCode;
use crate::formats::request::{ApiVersion, RequestMessage};

#[derive(Debug, Write, RequestMessage)]
#[request_message(version = 0, key = "Metadata")]
pub struct MetadataRequestV0 {
    pub topics: Vec<MetadataReqV0Topic>,
}

#[derive(Debug, Write, Read)]
pub struct MetadataResponseV0 {
    pub brokers: Vec<MetadataRespV0Broker>,
    pub topics: Vec<MetadataRespV0Topic>,
}

#[derive(Debug, Write, Read)]
pub struct MetadataReqV0Topic {
    pub name: String,
}

#[derive(Debug, Write, Read)]
pub struct MetadataRespV0Broker {
    pub node_id: i32,
    pub host: String,
    pub port: i32,
}

#[derive(Debug, Write, Read)]
pub struct MetadataRespV0Topic {
    pub error_code: ErrorCode,
    pub name: String,
    pub partitions: Vec<MetadataRespV0Partition>,
}

#[derive(Debug, Write, Read)]
pub struct MetadataRespV0Partition {
    pub error_code: ErrorCode,
    pub partition_index: i32,
    pub leader_id: i32,
    pub replica_nodes: Vec<i32>,
    pub in_sync_replica_nodes: Vec<i32>,
}