crabka_protocol/opt/rustwide/workdir/generated/common/owned/
Assignment.owned.rs1use bytes::{Buf, BufMut};
4use crate::tagged_fields::{read_tagged_fields, tagged_fields_len, WriteTaggedFields};
5use crate::{Decode, Encode, ProtocolError, UnknownTaggedFields};
6
7#[derive(Debug, Clone, PartialEq, Eq, Default)]
8pub struct Assignment {
9 pub active_tasks: Vec<super::task_ids::TaskIds>,
10 pub standby_tasks: Vec<super::task_ids::TaskIds>,
11 pub warmup_tasks: Vec<super::task_ids::TaskIds>,
12 pub unknown_tagged_fields: UnknownTaggedFields,
13}
14
15impl Encode for Assignment {
16 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
17 let flex = version >= 0;
18 if version >= 0 { { crate::primitives::array::put_array_len(buf, (self.active_tasks).len(), flex); for it in &self.active_tasks { it.encode(buf, version)?; } } }
19 if version >= 0 { { crate::primitives::array::put_array_len(buf, (self.standby_tasks).len(), flex); for it in &self.standby_tasks { it.encode(buf, version)?; } } }
20 if version >= 0 { { crate::primitives::array::put_array_len(buf, (self.warmup_tasks).len(), flex); for it in &self.warmup_tasks { it.encode(buf, version)?; } } }
21 if flex {
22 let tagged = WriteTaggedFields::new();
23 tagged.write(buf, &self.unknown_tagged_fields);
24 }
25 Ok(())
26 }
27 fn encoded_len(&self, version: i16) -> usize {
28 let flex = version >= 0;
29 let mut n: usize = 0;
30 if version >= 0 { n += { let prefix = crate::primitives::array::array_len_prefix_len((self.active_tasks).len(), flex); let body: usize = (self.active_tasks).iter().map(|it| it.encoded_len(version)).sum(); prefix + body }; }
31 if version >= 0 { n += { let prefix = crate::primitives::array::array_len_prefix_len((self.standby_tasks).len(), flex); let body: usize = (self.standby_tasks).iter().map(|it| it.encoded_len(version)).sum(); prefix + body }; }
32 if version >= 0 { n += { let prefix = crate::primitives::array::array_len_prefix_len((self.warmup_tasks).len(), flex); let body: usize = (self.warmup_tasks).iter().map(|it| it.encoded_len(version)).sum(); prefix + body }; }
33 if flex {
34 let known_pairs: Vec<(u32, usize)> = Vec::new();
35 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
36 }
37 n
38 }
39}
40
41impl<'de> Decode<'de> for Assignment {
42 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
43 let flex = version >= 0;
44 let mut out = Self::default();
45 if version >= 0 { out.active_tasks = { let n = crate::primitives::array::get_array_len(buf, flex)?; let mut v = Vec::with_capacity(n); for _ in 0..n { v.push(super::task_ids::TaskIds::decode(buf, version)?); } v }; }
46 if version >= 0 { out.standby_tasks = { let n = crate::primitives::array::get_array_len(buf, flex)?; let mut v = Vec::with_capacity(n); for _ in 0..n { v.push(super::task_ids::TaskIds::decode(buf, version)?); } v }; }
47 if version >= 0 { out.warmup_tasks = { let n = crate::primitives::array::get_array_len(buf, flex)?; let mut v = Vec::with_capacity(n); for _ in 0..n { v.push(super::task_ids::TaskIds::decode(buf, version)?); } v }; }
48 if flex {
49 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| {
50 Ok(false)
51 })?;
52 }
53 Ok(out)
54 }
55}