diff options
Diffstat (limited to 'src/message/signalproxy/initdata.rs')
| -rw-r--r-- | src/message/signalproxy/initdata.rs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/message/signalproxy/initdata.rs b/src/message/signalproxy/initdata.rs index abeacad..7c3e443 100644 --- a/src/message/signalproxy/initdata.rs +++ b/src/message/signalproxy/initdata.rs @@ -1,12 +1,14 @@ use crate::message::MessageType; use crate::primitive::{Variant, VariantList}; -use crate::{Deserialize, Serialize}; +use crate::{deserialize::Deserialize, serialize::Serialize}; + +use super::objects::Types; #[derive(Clone, Debug, std::cmp::PartialEq)] pub struct InitData { class_name: String, object_name: String, - init_data: VariantList, + init_data: Types, } impl Serialize for InitData { @@ -17,24 +19,26 @@ impl Serialize for InitData { res.push(Variant::ByteArray(self.class_name.clone())); res.push(Variant::ByteArray(self.object_name.clone())); - res.append(&mut self.init_data.clone()); + res.append(&mut self.init_data.to_network()); res.serialize() } } impl Deserialize for InitData { - fn parse(b: &[std::primitive::u8]) -> Result<(std::primitive::usize, Self), failure::Error> { + fn parse(b: &[u8]) -> Result<(usize, Self), failure::Error> { let (size, mut res) = VariantList::parse(&b)?; res.remove(0); + let class_name: String = res.remove(0).into(); + Ok(( size, Self { - class_name: match_variant!(res.remove(0), Variant::ByteArray), - object_name: match_variant!(res.remove(0), Variant::ByteArray), - init_data: res, + class_name: class_name.clone(), + object_name: res.remove(0).into(), + init_data: Types::from_network(class_name.as_str(), &mut res), }, )) } |
