rsa_msg_packets/file/question/
reply.rs1use std::collections::VecDeque;
2
3use log::trace;
4use uuid::Uuid;
5
6use crate::{types::ByteMessage, util::{converter::{pop_front_vec, uuid_to_decque}, vec::decque_to_vec, modes::Modes, tools::uuid_from_vec}};
7
8#[derive(Debug, Clone)]
9pub struct FileQuestionReplyMsg {
10 pub uuid: Uuid,
11 pub accepted: bool
12}
13
14impl ByteMessage for FileQuestionReplyMsg {
15 fn serialize(&self) -> Vec<u8> {
16 let mut merged: VecDeque<u8> = VecDeque::new();
17
18 let mut b_uuid = uuid_to_decque(&self.uuid);
19 let b_accepted: u8 = if self.accepted == true { 1 } else { 0 };
20
21 merged.append(&mut b_uuid);
22 merged.push_back(b_accepted);
23
24 return Modes::SendFileQuestionReply.get_send(&decque_to_vec(merged));
25 }
26
27 fn deserialize(data: &Vec<u8>) -> anyhow::Result<Self> {
28 let mut data = data.clone();
29
30 let uuid = uuid_from_vec(&mut data)?;
31 let accepted = pop_front_vec(&mut data)?;
32 let accepted = accepted == 1;
33
34 let msg = FileQuestionReplyMsg {
35 uuid,
36 accepted
37 };
38
39 trace!("FileQuestionReplyMsg parsed: {:#?}", msg);
40 return Ok(msg);
41 }
42}