fluvio_dataplane_protocol/produce/
response.rs1use crate::core::Encoder;
2use crate::core::Decoder;
3use crate::derive::FluvioDefault;
4
5use crate::ErrorCode;
6
7#[derive(Encoder, Decoder, FluvioDefault, Debug)]
8pub struct ProduceResponse {
9 pub responses: Vec<TopicProduceResponse>,
11
12 #[fluvio(min_version = 1, ignorable)]
15 pub throttle_time_ms: i32,
16}
17
18impl ProduceResponse {
19 pub fn find_partition_response(
21 &self,
22 topic: &str,
23 partition: i32,
24 ) -> Option<&PartitionProduceResponse> {
25 if let Some(response) = self
26 .responses
27 .iter()
28 .find(|response| response.name == topic)
29 {
30 response
31 .partitions
32 .iter()
33 .find(|part_response| part_response.partition_index == partition)
34 } else {
35 None
36 }
37 }
38}
39
40#[derive(Encoder, Decoder, FluvioDefault, Debug)]
41pub struct TopicProduceResponse {
42 pub name: String,
44
45 pub partitions: Vec<PartitionProduceResponse>,
47}
48
49#[derive(Encoder, Decoder, FluvioDefault, Debug)]
50pub struct PartitionProduceResponse {
51 pub partition_index: i32,
53
54 pub error_code: ErrorCode,
56
57 pub base_offset: i64,
59
60 #[fluvio(min_version = 2, ignorable)]
64 pub log_append_time_ms: i64,
65
66 #[fluvio(min_version = 5, ignorable)]
68 pub log_start_offset: i64,
69}