1#![allow(
3 missing_docs,
4 clippy::all,
5 clippy::pedantic,
6 clippy::nursery,
7 clippy::arithmetic_side_effects,
8 reason = "Generated protocol modules mirror Kafka's schema shape and intentionally trade \
9 hand-written lint style for reproducible wire-code output."
10)]
11use bytes::{Bytes, BytesMut};
12
13use crate::*;
14
15#[derive(Debug, Clone, PartialEq)]
16pub struct OffsetFetchResponseData {
17 pub throttle_time_ms: i32,
20 pub topics: Vec<OffsetFetchResponseTopic>,
22 pub error_code: i16,
24 pub groups: Vec<OffsetFetchResponseGroup>,
26 pub _unknown_tagged_fields: Vec<RawTaggedField>,
27}
28impl Default for OffsetFetchResponseData {
29 fn default() -> Self {
30 Self {
31 throttle_time_ms: 0_i32,
32 topics: Vec::new(),
33 error_code: 0i16,
34 groups: Vec::new(),
35 _unknown_tagged_fields: Vec::new(),
36 }
37 }
38}
39impl OffsetFetchResponseData {
40 pub fn with_throttle_time_ms(mut self, value: i32) -> Self {
41 self.throttle_time_ms = value;
42 self
43 }
44 pub fn with_topics(mut self, value: Vec<OffsetFetchResponseTopic>) -> Self {
45 self.topics = value;
46 self
47 }
48 pub fn with_error_code(mut self, value: i16) -> Self {
49 self.error_code = value;
50 self
51 }
52 pub fn with_groups(mut self, value: Vec<OffsetFetchResponseGroup>) -> Self {
53 self.groups = value;
54 self
55 }
56 pub fn read(buf: &mut Bytes, version: i16) -> Result<Self> {
57 if version < 1 || version > 10 {
58 return Err(UnsupportedVersion::new(9, version).into());
59 }
60 let mut throttle_time_ms = 0_i32;
61 let mut topics = Vec::new();
62 let mut error_code = 0i16;
63 let mut groups = Vec::new();
64 let mut _unknown_tagged_fields: Vec<RawTaggedField> = Vec::new();
65 if version >= 3 {
66 throttle_time_ms = read_i32(buf)?;
67 }
68 if version <= 7 {
69 if version >= 6 {
70 topics = {
71 let len = read_compact_array_length(buf)?;
72 let mut arr = Vec::with_capacity(array_read_capacity(len, (buf).len()));
73 for _ in 0..len {
74 arr.push(OffsetFetchResponseTopic::read(buf, version)?);
75 }
76 arr
77 };
78 } else {
79 topics = {
80 let len = read_array_length(buf)?;
81 let mut arr = Vec::with_capacity(array_read_capacity(len, (buf).len()));
82 for _ in 0..len {
83 arr.push(OffsetFetchResponseTopic::read(buf, version)?);
84 }
85 arr
86 };
87 }
88 }
89 if version >= 2 && version <= 7 {
90 error_code = read_i16(buf)?;
91 }
92 if version >= 8 {
93 groups = {
94 let len = read_compact_array_length(buf)?;
95 let mut arr = Vec::with_capacity(array_read_capacity(len, (buf).len()));
96 for _ in 0..len {
97 arr.push(OffsetFetchResponseGroup::read(buf, version)?);
98 }
99 arr
100 };
101 }
102 if version >= 6 {
103 let tagged_fields = read_tagged_fields(buf)?;
104 for field in &tagged_fields {
105 match field.tag {
106 _ => {
107 _unknown_tagged_fields.push(field.clone());
108 },
109 }
110 }
111 }
112 Ok(Self {
113 throttle_time_ms,
114 topics,
115 error_code,
116 groups,
117 _unknown_tagged_fields,
118 })
119 }
120 pub fn write(&self, buf: &mut BytesMut, version: i16) -> Result<()> {
121 if version < 1 || version > 10 {
122 return Err(UnsupportedVersion::new(9, version).into());
123 }
124 if version >= 3 {
125 write_i32(buf, self.throttle_time_ms);
126 } else if self.throttle_time_ms != 0_i32 {
127 return Err(UnsupportedFieldVersion::new(9, "throttle_time_ms", version).into());
128 }
129 if version <= 7 {
130 if version >= 6 {
131 write_compact_array_length(buf, self.topics.len() as i32);
132 for el in &self.topics {
133 el.write(buf, version)?;
134 }
135 } else {
136 write_array_length(buf, self.topics.len() as i32);
137 for el in &self.topics {
138 el.write(buf, version)?;
139 }
140 }
141 } else if self.topics != Vec::new() {
142 return Err(UnsupportedFieldVersion::new(9, "topics", version).into());
143 }
144 if version >= 2 && version <= 7 {
145 write_i16(buf, self.error_code);
146 } else if self.error_code != 0i16 {
147 return Err(UnsupportedFieldVersion::new(9, "error_code", version).into());
148 }
149 if version >= 8 {
150 write_compact_array_length(buf, self.groups.len() as i32);
151 for el in &self.groups {
152 el.write(buf, version)?;
153 }
154 } else if self.groups != Vec::new() {
155 return Err(UnsupportedFieldVersion::new(9, "groups", version).into());
156 }
157 if version >= 6 {
158 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
159 all_tags.sort_by_key(|f| f.tag);
160 write_tagged_fields(buf, &all_tags)?;
161 }
162 Ok(())
163 }
164 pub fn encoded_len(&self, version: i16) -> Result<usize> {
165 if version < 1 || version > 10 {
166 return Err(UnsupportedVersion::new(9, version).into());
167 }
168 let mut len: usize = 0;
169 if version >= 3 {
170 len += 4;
171 } else if self.throttle_time_ms != 0_i32 {
172 return Err(UnsupportedFieldVersion::new(9, "throttle_time_ms", version).into());
173 }
174 if version <= 7 {
175 if version >= 6 {
176 len += compact_array_length_len(self.topics.len() as i32);
177 for el in &self.topics {
178 len += el.encoded_len(version)?;
179 }
180 } else {
181 len += array_length_len();
182 for el in &self.topics {
183 len += el.encoded_len(version)?;
184 }
185 }
186 } else if self.topics != Vec::new() {
187 return Err(UnsupportedFieldVersion::new(9, "topics", version).into());
188 }
189 if version >= 2 && version <= 7 {
190 len += 2;
191 } else if self.error_code != 0i16 {
192 return Err(UnsupportedFieldVersion::new(9, "error_code", version).into());
193 }
194 if version >= 8 {
195 len += compact_array_length_len(self.groups.len() as i32);
196 for el in &self.groups {
197 len += el.encoded_len(version)?;
198 }
199 } else if self.groups != Vec::new() {
200 return Err(UnsupportedFieldVersion::new(9, "groups", version).into());
201 }
202 if version >= 6 {
203 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
204 all_tags.sort_by_key(|f| f.tag);
205 len += tagged_fields_len(&all_tags)?;
206 }
207 Ok(len)
208 }
209}
210#[derive(Debug, Clone, PartialEq)]
211pub struct OffsetFetchResponseTopic {
212 pub name: KafkaString,
214 pub partitions: Vec<OffsetFetchResponsePartition>,
216 pub _unknown_tagged_fields: Vec<RawTaggedField>,
217}
218impl Default for OffsetFetchResponseTopic {
219 fn default() -> Self {
220 Self {
221 name: KafkaString::default(),
222 partitions: Vec::new(),
223 _unknown_tagged_fields: Vec::new(),
224 }
225 }
226}
227impl OffsetFetchResponseTopic {
228 pub fn with_name(mut self, value: KafkaString) -> Self {
229 self.name = value;
230 self
231 }
232 pub fn with_partitions(mut self, value: Vec<OffsetFetchResponsePartition>) -> Self {
233 self.partitions = value;
234 self
235 }
236 pub fn read(buf: &mut Bytes, version: i16) -> Result<Self> {
237 let name;
238 let partitions;
239 let mut _unknown_tagged_fields: Vec<RawTaggedField> = Vec::new();
240 if version >= 6 {
241 name = read_compact_string(buf)?;
242 } else {
243 name = read_string(buf)?;
244 }
245 if version >= 6 {
246 partitions = {
247 let len = read_compact_array_length(buf)?;
248 let mut arr = Vec::with_capacity(array_read_capacity(len, (buf).len()));
249 for _ in 0..len {
250 arr.push(OffsetFetchResponsePartition::read(buf, version)?);
251 }
252 arr
253 };
254 } else {
255 partitions = {
256 let len = read_array_length(buf)?;
257 let mut arr = Vec::with_capacity(array_read_capacity(len, (buf).len()));
258 for _ in 0..len {
259 arr.push(OffsetFetchResponsePartition::read(buf, version)?);
260 }
261 arr
262 };
263 }
264 if version >= 6 {
265 let tagged_fields = read_tagged_fields(buf)?;
266 for field in &tagged_fields {
267 match field.tag {
268 _ => {
269 _unknown_tagged_fields.push(field.clone());
270 },
271 }
272 }
273 }
274 Ok(Self {
275 name,
276 partitions,
277 _unknown_tagged_fields,
278 })
279 }
280 pub fn write(&self, buf: &mut BytesMut, version: i16) -> Result<()> {
281 if version >= 6 {
282 write_compact_string(buf, &self.name)?;
283 } else {
284 write_string(buf, &self.name)?;
285 }
286 if version >= 6 {
287 write_compact_array_length(buf, self.partitions.len() as i32);
288 for el in &self.partitions {
289 el.write(buf, version)?;
290 }
291 } else {
292 write_array_length(buf, self.partitions.len() as i32);
293 for el in &self.partitions {
294 el.write(buf, version)?;
295 }
296 }
297 if version >= 6 {
298 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
299 all_tags.sort_by_key(|f| f.tag);
300 write_tagged_fields(buf, &all_tags)?;
301 }
302 Ok(())
303 }
304 pub fn encoded_len(&self, version: i16) -> Result<usize> {
305 let mut len: usize = 0;
306 if version >= 6 {
307 len += compact_string_len(&self.name)?;
308 } else {
309 len += string_len(&self.name)?;
310 }
311 if version >= 6 {
312 len += compact_array_length_len(self.partitions.len() as i32);
313 for el in &self.partitions {
314 len += el.encoded_len(version)?;
315 }
316 } else {
317 len += array_length_len();
318 for el in &self.partitions {
319 len += el.encoded_len(version)?;
320 }
321 }
322 if version >= 6 {
323 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
324 all_tags.sort_by_key(|f| f.tag);
325 len += tagged_fields_len(&all_tags)?;
326 }
327 Ok(len)
328 }
329}
330#[derive(Debug, Clone, PartialEq)]
331pub struct OffsetFetchResponsePartition {
332 pub partition_index: i32,
334 pub committed_offset: i64,
336 pub committed_leader_epoch: i32,
338 pub metadata: Option<KafkaString>,
340 pub error_code: i16,
342 pub _unknown_tagged_fields: Vec<RawTaggedField>,
343}
344impl Default for OffsetFetchResponsePartition {
345 fn default() -> Self {
346 Self {
347 partition_index: 0_i32,
348 committed_offset: 0_i64,
349 committed_leader_epoch: -1i32,
350 metadata: None,
351 error_code: 0_i16,
352 _unknown_tagged_fields: Vec::new(),
353 }
354 }
355}
356impl OffsetFetchResponsePartition {
357 pub fn with_partition_index(mut self, value: i32) -> Self {
358 self.partition_index = value;
359 self
360 }
361 pub fn with_committed_offset(mut self, value: i64) -> Self {
362 self.committed_offset = value;
363 self
364 }
365 pub fn with_committed_leader_epoch(mut self, value: i32) -> Self {
366 self.committed_leader_epoch = value;
367 self
368 }
369 pub fn with_metadata(mut self, value: Option<KafkaString>) -> Self {
370 self.metadata = value;
371 self
372 }
373 pub fn with_error_code(mut self, value: i16) -> Self {
374 self.error_code = value;
375 self
376 }
377 pub fn read(buf: &mut Bytes, version: i16) -> Result<Self> {
378 let partition_index;
379 let committed_offset;
380 let mut committed_leader_epoch = -1i32;
381 let metadata;
382 let error_code;
383 let mut _unknown_tagged_fields: Vec<RawTaggedField> = Vec::new();
384 partition_index = read_i32(buf)?;
385 committed_offset = read_i64(buf)?;
386 if version >= 5 {
387 committed_leader_epoch = read_i32(buf)?;
388 }
389 if version >= 6 {
390 metadata = read_compact_nullable_string(buf)?;
391 } else {
392 metadata = read_nullable_string(buf)?;
393 }
394 error_code = read_i16(buf)?;
395 if version >= 6 {
396 let tagged_fields = read_tagged_fields(buf)?;
397 for field in &tagged_fields {
398 match field.tag {
399 _ => {
400 _unknown_tagged_fields.push(field.clone());
401 },
402 }
403 }
404 }
405 Ok(Self {
406 partition_index,
407 committed_offset,
408 committed_leader_epoch,
409 metadata,
410 error_code,
411 _unknown_tagged_fields,
412 })
413 }
414 pub fn write(&self, buf: &mut BytesMut, version: i16) -> Result<()> {
415 write_i32(buf, self.partition_index);
416 write_i64(buf, self.committed_offset);
417 if version >= 5 {
418 write_i32(buf, self.committed_leader_epoch);
419 } else if self.committed_leader_epoch != -1i32 {
420 return Err(UnsupportedFieldVersion::new(9, "committed_leader_epoch", version).into());
421 }
422 if version >= 6 {
423 write_compact_nullable_string(buf, self.metadata.as_ref())?;
424 } else {
425 write_nullable_string(buf, self.metadata.as_ref())?;
426 }
427 write_i16(buf, self.error_code);
428 if version >= 6 {
429 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
430 all_tags.sort_by_key(|f| f.tag);
431 write_tagged_fields(buf, &all_tags)?;
432 }
433 Ok(())
434 }
435 pub fn encoded_len(&self, version: i16) -> Result<usize> {
436 let mut len: usize = 0;
437 len += 4;
438 len += 8;
439 if version >= 5 {
440 len += 4;
441 } else if self.committed_leader_epoch != -1i32 {
442 return Err(UnsupportedFieldVersion::new(9, "committed_leader_epoch", version).into());
443 }
444 if version >= 6 {
445 len += compact_nullable_string_len(self.metadata.as_ref())?;
446 } else {
447 len += nullable_string_len(self.metadata.as_ref())?;
448 }
449 len += 2;
450 if version >= 6 {
451 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
452 all_tags.sort_by_key(|f| f.tag);
453 len += tagged_fields_len(&all_tags)?;
454 }
455 Ok(len)
456 }
457}
458#[derive(Debug, Clone, PartialEq)]
459pub struct OffsetFetchResponseGroup {
460 pub group_id: KafkaString,
462 pub topics: Vec<OffsetFetchResponseTopics>,
464 pub error_code: i16,
466 pub _unknown_tagged_fields: Vec<RawTaggedField>,
467}
468impl Default for OffsetFetchResponseGroup {
469 fn default() -> Self {
470 Self {
471 group_id: KafkaString::default(),
472 topics: Vec::new(),
473 error_code: 0i16,
474 _unknown_tagged_fields: Vec::new(),
475 }
476 }
477}
478impl OffsetFetchResponseGroup {
479 pub fn with_group_id(mut self, value: KafkaString) -> Self {
480 self.group_id = value;
481 self
482 }
483 pub fn with_topics(mut self, value: Vec<OffsetFetchResponseTopics>) -> Self {
484 self.topics = value;
485 self
486 }
487 pub fn with_error_code(mut self, value: i16) -> Self {
488 self.error_code = value;
489 self
490 }
491 pub fn read(buf: &mut Bytes, version: i16) -> Result<Self> {
492 let group_id;
493 let topics;
494 let error_code;
495 let mut _unknown_tagged_fields: Vec<RawTaggedField> = Vec::new();
496 group_id = read_compact_string(buf)?;
497 topics = {
498 let len = read_compact_array_length(buf)?;
499 let mut arr = Vec::with_capacity(array_read_capacity(len, (buf).len()));
500 for _ in 0..len {
501 arr.push(OffsetFetchResponseTopics::read(buf, version)?);
502 }
503 arr
504 };
505 error_code = read_i16(buf)?;
506 let tagged_fields = read_tagged_fields(buf)?;
507 for field in &tagged_fields {
508 match field.tag {
509 _ => {
510 _unknown_tagged_fields.push(field.clone());
511 },
512 }
513 }
514 Ok(Self {
515 group_id,
516 topics,
517 error_code,
518 _unknown_tagged_fields,
519 })
520 }
521 pub fn write(&self, buf: &mut BytesMut, version: i16) -> Result<()> {
522 write_compact_string(buf, &self.group_id)?;
523 write_compact_array_length(buf, self.topics.len() as i32);
524 for el in &self.topics {
525 el.write(buf, version)?;
526 }
527 write_i16(buf, self.error_code);
528 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
529 all_tags.sort_by_key(|f| f.tag);
530 write_tagged_fields(buf, &all_tags)?;
531 Ok(())
532 }
533 pub fn encoded_len(&self, version: i16) -> Result<usize> {
534 let mut len: usize = 0;
535 len += compact_string_len(&self.group_id)?;
536 len += compact_array_length_len(self.topics.len() as i32);
537 for el in &self.topics {
538 len += el.encoded_len(version)?;
539 }
540 len += 2;
541 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
542 all_tags.sort_by_key(|f| f.tag);
543 len += tagged_fields_len(&all_tags)?;
544 Ok(len)
545 }
546}
547#[derive(Debug, Clone, PartialEq)]
548pub struct OffsetFetchResponseTopics {
549 pub name: KafkaString,
551 pub topic_id: KafkaUuid,
553 pub partitions: Vec<OffsetFetchResponsePartitions>,
555 pub _unknown_tagged_fields: Vec<RawTaggedField>,
556}
557impl Default for OffsetFetchResponseTopics {
558 fn default() -> Self {
559 Self {
560 name: KafkaString::default(),
561 topic_id: KafkaUuid::ZERO,
562 partitions: Vec::new(),
563 _unknown_tagged_fields: Vec::new(),
564 }
565 }
566}
567impl OffsetFetchResponseTopics {
568 pub fn with_name(mut self, value: KafkaString) -> Self {
569 self.name = value;
570 self
571 }
572 pub fn with_topic_id(mut self, value: KafkaUuid) -> Self {
573 self.topic_id = value;
574 self
575 }
576 pub fn with_partitions(mut self, value: Vec<OffsetFetchResponsePartitions>) -> Self {
577 self.partitions = value;
578 self
579 }
580 pub fn read(buf: &mut Bytes, version: i16) -> Result<Self> {
581 let mut name = KafkaString::default();
582 let mut topic_id = KafkaUuid::ZERO;
583 let partitions;
584 let mut _unknown_tagged_fields: Vec<RawTaggedField> = Vec::new();
585 if version <= 9 {
586 name = read_compact_string(buf)?;
587 }
588 if version >= 10 {
589 topic_id = read_uuid(buf)?;
590 }
591 partitions = {
592 let len = read_compact_array_length(buf)?;
593 let mut arr = Vec::with_capacity(array_read_capacity(len, (buf).len()));
594 for _ in 0..len {
595 arr.push(OffsetFetchResponsePartitions::read(buf, version)?);
596 }
597 arr
598 };
599 let tagged_fields = read_tagged_fields(buf)?;
600 for field in &tagged_fields {
601 match field.tag {
602 _ => {
603 _unknown_tagged_fields.push(field.clone());
604 },
605 }
606 }
607 Ok(Self {
608 name,
609 topic_id,
610 partitions,
611 _unknown_tagged_fields,
612 })
613 }
614 pub fn write(&self, buf: &mut BytesMut, version: i16) -> Result<()> {
615 if version <= 9 {
616 write_compact_string(buf, &self.name)?;
617 } else if self.name != KafkaString::default() {
618 return Err(UnsupportedFieldVersion::new(9, "name", version).into());
619 }
620 if version >= 10 {
621 write_uuid(buf, &self.topic_id);
622 } else if self.topic_id != KafkaUuid::ZERO {
623 return Err(UnsupportedFieldVersion::new(9, "topic_id", version).into());
624 }
625 write_compact_array_length(buf, self.partitions.len() as i32);
626 for el in &self.partitions {
627 el.write(buf, version)?;
628 }
629 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
630 all_tags.sort_by_key(|f| f.tag);
631 write_tagged_fields(buf, &all_tags)?;
632 Ok(())
633 }
634 pub fn encoded_len(&self, version: i16) -> Result<usize> {
635 let mut len: usize = 0;
636 if version <= 9 {
637 len += compact_string_len(&self.name)?;
638 } else if self.name != KafkaString::default() {
639 return Err(UnsupportedFieldVersion::new(9, "name", version).into());
640 }
641 if version >= 10 {
642 len += 16;
643 } else if self.topic_id != KafkaUuid::ZERO {
644 return Err(UnsupportedFieldVersion::new(9, "topic_id", version).into());
645 }
646 len += compact_array_length_len(self.partitions.len() as i32);
647 for el in &self.partitions {
648 len += el.encoded_len(version)?;
649 }
650 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
651 all_tags.sort_by_key(|f| f.tag);
652 len += tagged_fields_len(&all_tags)?;
653 Ok(len)
654 }
655}
656#[derive(Debug, Clone, PartialEq)]
657pub struct OffsetFetchResponsePartitions {
658 pub partition_index: i32,
660 pub committed_offset: i64,
662 pub committed_leader_epoch: i32,
664 pub metadata: Option<KafkaString>,
666 pub error_code: i16,
668 pub _unknown_tagged_fields: Vec<RawTaggedField>,
669}
670impl Default for OffsetFetchResponsePartitions {
671 fn default() -> Self {
672 Self {
673 partition_index: 0_i32,
674 committed_offset: 0_i64,
675 committed_leader_epoch: -1i32,
676 metadata: None,
677 error_code: 0_i16,
678 _unknown_tagged_fields: Vec::new(),
679 }
680 }
681}
682impl OffsetFetchResponsePartitions {
683 pub fn with_partition_index(mut self, value: i32) -> Self {
684 self.partition_index = value;
685 self
686 }
687 pub fn with_committed_offset(mut self, value: i64) -> Self {
688 self.committed_offset = value;
689 self
690 }
691 pub fn with_committed_leader_epoch(mut self, value: i32) -> Self {
692 self.committed_leader_epoch = value;
693 self
694 }
695 pub fn with_metadata(mut self, value: Option<KafkaString>) -> Self {
696 self.metadata = value;
697 self
698 }
699 pub fn with_error_code(mut self, value: i16) -> Self {
700 self.error_code = value;
701 self
702 }
703 pub fn read(buf: &mut Bytes, _version: i16) -> Result<Self> {
704 let partition_index;
705 let committed_offset;
706 let committed_leader_epoch;
707 let metadata;
708 let error_code;
709 let mut _unknown_tagged_fields: Vec<RawTaggedField> = Vec::new();
710 partition_index = read_i32(buf)?;
711 committed_offset = read_i64(buf)?;
712 committed_leader_epoch = read_i32(buf)?;
713 metadata = read_compact_nullable_string(buf)?;
714 error_code = read_i16(buf)?;
715 let tagged_fields = read_tagged_fields(buf)?;
716 for field in &tagged_fields {
717 match field.tag {
718 _ => {
719 _unknown_tagged_fields.push(field.clone());
720 },
721 }
722 }
723 Ok(Self {
724 partition_index,
725 committed_offset,
726 committed_leader_epoch,
727 metadata,
728 error_code,
729 _unknown_tagged_fields,
730 })
731 }
732 pub fn write(&self, buf: &mut BytesMut, _version: i16) -> Result<()> {
733 write_i32(buf, self.partition_index);
734 write_i64(buf, self.committed_offset);
735 write_i32(buf, self.committed_leader_epoch);
736 write_compact_nullable_string(buf, self.metadata.as_ref())?;
737 write_i16(buf, self.error_code);
738 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
739 all_tags.sort_by_key(|f| f.tag);
740 write_tagged_fields(buf, &all_tags)?;
741 Ok(())
742 }
743 pub fn encoded_len(&self, _version: i16) -> Result<usize> {
744 let mut len: usize = 0;
745 len += 4;
746 len += 8;
747 len += 4;
748 len += compact_nullable_string_len(self.metadata.as_ref())?;
749 len += 2;
750 let mut all_tags: Vec<RawTaggedField> = self._unknown_tagged_fields.clone();
751 all_tags.sort_by_key(|f| f.tag);
752 len += tagged_fields_len(&all_tags)?;
753 Ok(len)
754 }
755}