kf_protocol_message/kf_code_gen/
metadata.rs1use serde::{Deserialize, Serialize};
5
6use kf_protocol_api::ErrorCode;
7use kf_protocol_api::Request;
8
9use kf_protocol_derive::Decode;
10use kf_protocol_derive::Encode;
11use kf_protocol_derive::KfDefault;
12use flv_util::socket_helpers::ServerAddress;
13#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
18pub struct KfMetadataRequest {
19 pub topics: Option<Vec<MetadataRequestTopic>>,
21
22 #[fluvio_kf(min_version = 4)]
25 pub allow_auto_topic_creation: bool,
26}
27
28#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
29pub struct MetadataRequestTopic {
30 pub name: String,
32}
33
34#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
39pub struct KfMetadataResponse {
40 #[fluvio_kf(min_version = 3)]
43 pub throttle_time_ms: i32,
44
45 pub brokers: Vec<MetadataResponseBroker>,
47
48 #[fluvio_kf(min_version = 2, ignorable)]
50 pub cluster_id: Option<String>,
51
52 #[fluvio_kf(min_version = 1, ignorable)]
54 pub controller_id: i32,
55
56 pub topics: Vec<MetadataResponseTopic>,
58}
59
60#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
61pub struct MetadataResponseBroker {
62 pub node_id: i32,
64
65 pub host: String,
67
68 pub port: i32,
70
71 #[fluvio_kf(min_version = 1, ignorable)]
73 pub rack: Option<String>,
74}
75
76impl MetadataResponseBroker {
77 pub fn into(&self) -> ServerAddress {
78 ServerAddress::new(self.host.clone(),self.port as u16)
79 }
80}
81
82#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
83pub struct MetadataResponseTopic {
84 pub error_code: ErrorCode,
86
87 pub name: String,
89
90 #[fluvio_kf(min_version = 1, ignorable)]
92 pub is_internal: bool,
93
94 pub partitions: Vec<MetadataResponsePartition>,
96}
97
98#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
99pub struct MetadataResponsePartition {
100 pub error_code: ErrorCode,
102
103 pub partition_index: i32,
105
106 pub leader_id: i32,
108
109 #[fluvio_kf(min_version = 7, ignorable)]
111 pub leader_epoch: i32,
112
113 pub replica_nodes: Vec<i32>,
115
116 pub isr_nodes: Vec<i32>,
118
119 #[fluvio_kf(min_version = 5, ignorable)]
121 pub offline_replicas: Vec<i32>,
122}
123
124impl Request for KfMetadataRequest {
129 const API_KEY: u16 = 3;
130
131 const MIN_API_VERSION: i16 = 0;
132 const MAX_API_VERSION: i16 = 7;
133 const DEFAULT_API_VERSION: i16 = 7;
134
135 type Response = KfMetadataResponse;
136}