1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
/// WARNING: CODE GENERATED FILE
/// * This file is generated by kfspec2code.
/// * Any changes applied to this file will be lost when a new spec is generated.
use serde::{Deserialize, Serialize};

use kf_protocol_api::ErrorCode;
use kf_protocol_api::Request;

use kf_protocol_derive::Decode;
use kf_protocol_derive::Encode;
use kf_protocol_derive::KfDefault;

// -----------------------------------
// KfUpdateMetadataRequest
// -----------------------------------

#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct KfUpdateMetadataRequest {
    /// The controller id.
    pub controller_id: i32,

    /// The controller epoch.
    pub controller_epoch: i32,

    /// The broker epoch.
    #[fluvio_kf(min_version = 5, ignorable)]
    pub broker_epoch: i64,

    /// Each topic that we would like to update.
    #[fluvio_kf(min_version = 5)]
    pub topic_states: Vec<UpdateMetadataRequestTopicState>,

    /// Each partition that we would like to update.
    #[fluvio_kf(max_version = 4)]
    pub partition_states_v0: Vec<UpdateMetadataRequestPartitionStateV0>,

    pub brokers: Vec<UpdateMetadataRequestBroker>,
}

#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct UpdateMetadataRequestTopicState {
    /// The topic name.
    pub topic_name: String,

    /// The partition that we would like to update.
    #[fluvio_kf(min_version = 5)]
    pub partition_states: Vec<UpdateMetadataPartitionState>,
}

#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct UpdateMetadataRequestPartitionStateV0 {
    /// The topic name.
    #[fluvio_kf(max_version = 4)]
    pub topic_name: String,

    /// The partition index.
    #[fluvio_kf(max_version = 4)]
    pub partition_index: i32,

    /// The controller epoch.
    #[fluvio_kf(max_version = 4)]
    pub controller_epoch: i32,

    /// The ID of the broker which is the current partition leader.
    #[fluvio_kf(max_version = 4)]
    pub leader: i32,

    /// The leader epoch of this partition.
    #[fluvio_kf(max_version = 4)]
    pub leader_epoch: i32,

    /// The brokers which are in the ISR for this partition.
    #[fluvio_kf(max_version = 4)]
    pub isr: Vec<i32>,

    /// The Zookeeper version.
    #[fluvio_kf(max_version = 4)]
    pub zk_version: i32,

    /// All the replicas of this partition.
    #[fluvio_kf(max_version = 4)]
    pub replicas: Vec<i32>,

    /// The replicas of this partition which are offline.
    #[fluvio_kf(min_version = 4, max_version = 4)]
    pub offline_replicas: Vec<i32>,
}

#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct UpdateMetadataRequestBroker {
    pub id: i32,

    /// The broker endpoints.
    #[fluvio_kf(min_version = 1)]
    pub endpoints: Vec<UpdateMetadataRequestEndpoint>,

    /// The rack which this broker belongs to.
    #[fluvio_kf(min_version = 2, ignorable)]
    pub rack: Option<String>,
}

#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct UpdateMetadataRequestEndpoint {
    /// The port of this endpoint
    #[fluvio_kf(min_version = 1)]
    pub port: i32,

    /// The hostname of this endpoint
    #[fluvio_kf(min_version = 1)]
    pub host: String,

    /// The listener name.
    #[fluvio_kf(min_version = 3)]
    pub listener: String,

    /// The security protocol type.
    #[fluvio_kf(min_version = 1)]
    pub security_protocol: i16,
}

#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct UpdateMetadataPartitionState {
    /// The partition index.
    #[fluvio_kf(min_version = 5)]
    pub partition_index: i32,

    /// The controller epoch.
    #[fluvio_kf(min_version = 5)]
    pub controller_epoch: i32,

    /// The ID of the broker which is the current partition leader.
    #[fluvio_kf(min_version = 5)]
    pub leader: i32,

    /// The leader epoch of this partition.
    #[fluvio_kf(min_version = 5)]
    pub leader_epoch: i32,

    /// The brokers which are in the ISR for this partition.
    #[fluvio_kf(min_version = 5)]
    pub isr: Vec<i32>,

    /// The Zookeeper version.
    #[fluvio_kf(min_version = 5)]
    pub zk_version: i32,

    /// All the replicas of this partition.
    #[fluvio_kf(min_version = 5)]
    pub replicas: Vec<i32>,

    /// The replicas of this partition which are offline.
    #[fluvio_kf(min_version = 5)]
    pub offline_replicas: Vec<i32>,
}

// -----------------------------------
// KfUpdateMetadataResponse
// -----------------------------------

#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct KfUpdateMetadataResponse {
    /// The error code, or 0 if there was no error.
    pub error_code: ErrorCode,
}

// -----------------------------------
// Implementation - KfUpdateMetadataRequest
// -----------------------------------

impl Request for KfUpdateMetadataRequest {
    const API_KEY: u16 = 6;

    const MIN_API_VERSION: i16 = 0;
    const MAX_API_VERSION: i16 = 5;
    const DEFAULT_API_VERSION: i16 = 5;

    type Response = KfUpdateMetadataResponse;
}