catbuffer_rust/
account_operation_restriction_transaction_body_builder.rs1use super::account_restriction_flags_dto::*;
23use super::entity_type_dto::*;
24use super::generator_utils::*;
25
26#[derive(Debug, Clone)]
28pub struct AccountOperationRestrictionTransactionBodyBuilder {
29 pub restriction_flags: Vec<AccountRestrictionFlagsDto>,
31 pub restriction_additions: Vec<EntityTypeDto>,
33 pub restriction_deletions: Vec<EntityTypeDto>,
35}
36
37impl AccountOperationRestrictionTransactionBodyBuilder {
38 pub fn from_binary(payload: &[u8]) -> Self {
43 let mut _bytes = payload.to_vec();
44 let restriction_flags = AccountRestrictionFlagsDto::bytes_to_flags(&_bytes[..2]); let mut _bytes = (&_bytes[2..]).to_vec();
46 let buf = fixed_bytes::<1>(&_bytes);
47 let restriction_additions_count = u8::from_le_bytes(buf); _bytes = (&_bytes[1..]).to_vec();
49 let buf = fixed_bytes::<1>(&_bytes);
50 let restriction_deletions_count = u8::from_le_bytes(buf); _bytes = (&_bytes[1..]).to_vec();
52 let buf = fixed_bytes::<4>(&_bytes);
53 let _ = u32::from_le_bytes(buf); _bytes = (&_bytes[4..]).to_vec();
55 let mut restriction_additions: Vec<EntityTypeDto> = vec![]; for _ in 0..restriction_additions_count {
57 let item = EntityTypeDto::from_binary(&_bytes);
58 restriction_additions.push(item.clone());
59 _bytes = (&_bytes[item.get_size()..]).to_vec();
60 }
61 let mut restriction_deletions: Vec<EntityTypeDto> = vec![]; for _ in 0..restriction_deletions_count {
63 let item = EntityTypeDto::from_binary(&_bytes);
64 restriction_deletions.push(item.clone());
65 _bytes = (&_bytes[item.get_size()..]).to_vec();
66 }
67 AccountOperationRestrictionTransactionBodyBuilder { restriction_flags, restriction_additions, restriction_deletions } }
70
71 pub fn get_size(&self) -> usize {
76 let mut size = 0;
77 size += 2; size += 1; size += 1; size += 4; for i in &self.restriction_additions {
82 size += i.get_size(); };
84 for i in &self.restriction_deletions {
85 size += i.get_size(); };
87 size
88 }
89
90 pub fn serializer(&self) -> Vec<u8> {
95 let mut buf: Vec<u8> = vec![];
96 buf.append(&mut AccountRestrictionFlagsDto::flags_to_int(self.restriction_flags.clone()).to_le_bytes().to_vec()); let size_value: u8 = self.restriction_additions.len() as u8;
98 buf.append(&mut size_value.to_le_bytes().to_vec()); let size_value: u8 = self.restriction_deletions.len() as u8;
100 buf.append(&mut size_value.to_le_bytes().to_vec()); buf.append(&mut [0u8; 4].to_vec()); for i in &self.restriction_additions {
103 buf.append(&mut i.serializer()); }
105 for i in &self.restriction_deletions {
106 buf.append(&mut i.serializer()); }
108 buf
109 }
110}
111