kf_protocol_message/kf_code_gen/
list_offset.rs1use serde::{Deserialize, Serialize};
5
6use kf_protocol_api::ErrorCode;
7use kf_protocol_api::Isolation;
8use kf_protocol_api::Request;
9
10use kf_protocol_derive::Decode;
11use kf_protocol_derive::Encode;
12use kf_protocol_derive::KfDefault;
13
14#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
19pub struct KfListOffsetRequest {
20 pub replica_id: i32,
22
23 #[fluvio_kf(min_version = 2)]
30 pub isolation_level: Isolation,
31
32 pub topics: Vec<ListOffsetTopic>,
34}
35
36
37
38#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
39pub struct ListOffsetTopic {
40 pub name: String,
42
43 pub partitions: Vec<ListOffsetPartition>,
45}
46
47#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
48pub struct ListOffsetPartition {
49 pub partition_index: i32,
51
52 #[fluvio_kf(min_version = 4)]
54 pub current_leader_epoch: i32,
55
56 pub timestamp: i64,
58}
59
60#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
65pub struct KfListOffsetResponse {
66 #[fluvio_kf(min_version = 2, ignorable)]
69 pub throttle_time_ms: i32,
70
71 pub topics: Vec<ListOffsetTopicResponse>,
73}
74
75
76
77
78
79#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
80pub struct ListOffsetTopicResponse {
81 pub name: String,
83
84 pub partitions: Vec<ListOffsetPartitionResponse>,
86}
87
88#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
89pub struct ListOffsetPartitionResponse {
90 pub partition_index: i32,
92
93 pub error_code: ErrorCode,
95
96 #[fluvio_kf(min_version = 1)]
98 pub timestamp: i64,
99
100 #[fluvio_kf(min_version = 1)]
102 pub offset: i64,
103
104 #[fluvio_kf(min_version = 4)]
105 pub leader_epoch: i32,
106}
107
108impl Request for KfListOffsetRequest {
113 const API_KEY: u16 = 2;
114
115 const MIN_API_VERSION: i16 = 0;
116 const MAX_API_VERSION: i16 = 5;
117 const DEFAULT_API_VERSION: i16 = 5;
118
119 type Response = KfListOffsetResponse;
120}