kf_protocol_message/kf_code_gen/
produce.rs1use std::fmt::Debug;
5use std::marker::PhantomData;
6
7use kf_protocol::Decoder;
8use kf_protocol::Encoder;
9
10use serde::{Deserialize, Serialize};
11
12use kf_protocol_api::ErrorCode;
13use kf_protocol_api::Request;
14
15use kf_protocol_derive::Decode;
16use kf_protocol_derive::Encode;
17use kf_protocol_derive::KfDefault;
18
19#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
24pub struct KfProduceRequest<R>
25where
26 R: Encoder + Decoder + Default + Debug,
27{
28 #[fluvio_kf(min_version = 3)]
30 pub transactional_id: Option<String>,
31
32 pub acks: i16,
36
37 pub timeout_ms: i32,
39
40 pub topics: Vec<TopicProduceData<R>>,
42 pub data: PhantomData<R>,
43}
44
45#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
46pub struct TopicProduceData<R>
47where
48 R: Encoder + Decoder + Default + Debug,
49{
50 pub name: String,
52
53 pub partitions: Vec<PartitionProduceData<R>>,
55 pub data: PhantomData<R>,
56}
57
58#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
59pub struct PartitionProduceData<R>
60where
61 R: Encoder + Decoder + Default + Debug,
62{
63 pub partition_index: i32,
65
66 pub records: R,
68}
69
70#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
75pub struct KfProduceResponse {
76 pub responses: Vec<TopicProduceResponse>,
78
79 #[fluvio_kf(min_version = 1, ignorable)]
82 pub throttle_time_ms: i32,
83}
84
85#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
86pub struct TopicProduceResponse {
87 pub name: String,
89
90 pub partitions: Vec<PartitionProduceResponse>,
92}
93
94#[derive(Encode, Decode, Serialize, Deserialize, KfDefault, Debug)]
95pub struct PartitionProduceResponse {
96 pub partition_index: i32,
98
99 pub error_code: ErrorCode,
101
102 pub base_offset: i64,
104
105 #[fluvio_kf(min_version = 2, ignorable)]
109 pub log_append_time_ms: i64,
110
111 #[fluvio_kf(min_version = 5, ignorable)]
113 pub log_start_offset: i64,
114}
115
116impl<R> Request for KfProduceRequest<R>
121where
122 R: Debug + Decoder + Encoder,
123{
124 const API_KEY: u16 = 0;
125
126 const MIN_API_VERSION: i16 = 0;
127 const MAX_API_VERSION: i16 = 7;
128 const DEFAULT_API_VERSION: i16 = 7;
129
130 type Response = KfProduceResponse;
131
132}