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;
#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct KfUpdateMetadataRequest {
pub controller_id: i32,
pub controller_epoch: i32,
#[fluvio_kf(min_version = 5, ignorable)]
pub broker_epoch: i64,
#[fluvio_kf(min_version = 5)]
pub topic_states: Vec<UpdateMetadataRequestTopicState>,
#[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 {
pub topic_name: String,
#[fluvio_kf(min_version = 5)]
pub partition_states: Vec<UpdateMetadataPartitionState>,
}
#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct UpdateMetadataRequestPartitionStateV0 {
#[fluvio_kf(max_version = 4)]
pub topic_name: String,
#[fluvio_kf(max_version = 4)]
pub partition_index: i32,
#[fluvio_kf(max_version = 4)]
pub controller_epoch: i32,
#[fluvio_kf(max_version = 4)]
pub leader: i32,
#[fluvio_kf(max_version = 4)]
pub leader_epoch: i32,
#[fluvio_kf(max_version = 4)]
pub isr: Vec<i32>,
#[fluvio_kf(max_version = 4)]
pub zk_version: i32,
#[fluvio_kf(max_version = 4)]
pub replicas: Vec<i32>,
#[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,
#[fluvio_kf(min_version = 1)]
pub endpoints: Vec<UpdateMetadataRequestEndpoint>,
#[fluvio_kf(min_version = 2, ignorable)]
pub rack: Option<String>,
}
#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct UpdateMetadataRequestEndpoint {
#[fluvio_kf(min_version = 1)]
pub port: i32,
#[fluvio_kf(min_version = 1)]
pub host: String,
#[fluvio_kf(min_version = 3)]
pub listener: String,
#[fluvio_kf(min_version = 1)]
pub security_protocol: i16,
}
#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct UpdateMetadataPartitionState {
#[fluvio_kf(min_version = 5)]
pub partition_index: i32,
#[fluvio_kf(min_version = 5)]
pub controller_epoch: i32,
#[fluvio_kf(min_version = 5)]
pub leader: i32,
#[fluvio_kf(min_version = 5)]
pub leader_epoch: i32,
#[fluvio_kf(min_version = 5)]
pub isr: Vec<i32>,
#[fluvio_kf(min_version = 5)]
pub zk_version: i32,
#[fluvio_kf(min_version = 5)]
pub replicas: Vec<i32>,
#[fluvio_kf(min_version = 5)]
pub offline_replicas: Vec<i32>,
}
#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
pub struct KfUpdateMetadataResponse {
pub error_code: ErrorCode,
}
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;
}