kf_protocol_message/kf_code_gen/
update_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;
12
13#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
18pub struct KfUpdateMetadataRequest {
19 pub controller_id: i32,
21
22 pub controller_epoch: i32,
24
25 #[fluvio_kf(min_version = 5, ignorable)]
27 pub broker_epoch: i64,
28
29 #[fluvio_kf(min_version = 5)]
31 pub topic_states: Vec<UpdateMetadataRequestTopicState>,
32
33 #[fluvio_kf(max_version = 4)]
35 pub partition_states_v0: Vec<UpdateMetadataRequestPartitionStateV0>,
36
37 pub brokers: Vec<UpdateMetadataRequestBroker>,
38}
39
40#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
41pub struct UpdateMetadataRequestTopicState {
42 pub topic_name: String,
44
45 #[fluvio_kf(min_version = 5)]
47 pub partition_states: Vec<UpdateMetadataPartitionState>,
48}
49
50#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
51pub struct UpdateMetadataRequestPartitionStateV0 {
52 #[fluvio_kf(max_version = 4)]
54 pub topic_name: String,
55
56 #[fluvio_kf(max_version = 4)]
58 pub partition_index: i32,
59
60 #[fluvio_kf(max_version = 4)]
62 pub controller_epoch: i32,
63
64 #[fluvio_kf(max_version = 4)]
66 pub leader: i32,
67
68 #[fluvio_kf(max_version = 4)]
70 pub leader_epoch: i32,
71
72 #[fluvio_kf(max_version = 4)]
74 pub isr: Vec<i32>,
75
76 #[fluvio_kf(max_version = 4)]
78 pub zk_version: i32,
79
80 #[fluvio_kf(max_version = 4)]
82 pub replicas: Vec<i32>,
83
84 #[fluvio_kf(min_version = 4, max_version = 4)]
86 pub offline_replicas: Vec<i32>,
87}
88
89#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
90pub struct UpdateMetadataRequestBroker {
91 pub id: i32,
92
93 #[fluvio_kf(min_version = 1)]
95 pub endpoints: Vec<UpdateMetadataRequestEndpoint>,
96
97 #[fluvio_kf(min_version = 2, ignorable)]
99 pub rack: Option<String>,
100}
101
102#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
103pub struct UpdateMetadataRequestEndpoint {
104 #[fluvio_kf(min_version = 1)]
106 pub port: i32,
107
108 #[fluvio_kf(min_version = 1)]
110 pub host: String,
111
112 #[fluvio_kf(min_version = 3)]
114 pub listener: String,
115
116 #[fluvio_kf(min_version = 1)]
118 pub security_protocol: i16,
119}
120
121#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
122pub struct UpdateMetadataPartitionState {
123 #[fluvio_kf(min_version = 5)]
125 pub partition_index: i32,
126
127 #[fluvio_kf(min_version = 5)]
129 pub controller_epoch: i32,
130
131 #[fluvio_kf(min_version = 5)]
133 pub leader: i32,
134
135 #[fluvio_kf(min_version = 5)]
137 pub leader_epoch: i32,
138
139 #[fluvio_kf(min_version = 5)]
141 pub isr: Vec<i32>,
142
143 #[fluvio_kf(min_version = 5)]
145 pub zk_version: i32,
146
147 #[fluvio_kf(min_version = 5)]
149 pub replicas: Vec<i32>,
150
151 #[fluvio_kf(min_version = 5)]
153 pub offline_replicas: Vec<i32>,
154}
155
156#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
161pub struct KfUpdateMetadataResponse {
162 pub error_code: ErrorCode,
164}
165
166impl Request for KfUpdateMetadataRequest {
171 const API_KEY: u16 = 6;
172
173 const MIN_API_VERSION: i16 = 0;
174 const MAX_API_VERSION: i16 = 5;
175 const DEFAULT_API_VERSION: i16 = 5;
176
177 type Response = KfUpdateMetadataResponse;
178}