diff options
| author | Max Audron <audron@cocaine.farm> | 2020-04-29 00:00:44 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2020-04-29 00:00:44 +0200 |
| commit | fc64e11cdd35051a2ea87237f548ae0497a2f7f9 (patch) | |
| tree | c57937731898b0ffd66d1d95bb0f181cae568c37 /src/primitive/variantmap.rs | |
| parent | finish parsing of primitive types (diff) | |
refactor everything
Diffstat (limited to '')
| -rw-r--r-- | src/primitive/variantmap.rs (renamed from src/protocol/primitive/variantmap.rs) | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/src/protocol/primitive/variantmap.rs b/src/primitive/variantmap.rs index 22ca0f1..4f017f3 100644 --- a/src/protocol/primitive/variantmap.rs +++ b/src/primitive/variantmap.rs @@ -5,16 +5,17 @@ use failure::Error; use log::trace; -use crate::protocol::error::ProtocolError; -use crate::protocol::primitive::deserialize::Deserialize; -use crate::protocol::primitive::serialize::Serialize; -use crate::protocol::primitive::String; +use crate::Deserialize; +use crate::Serialize; -use crate::protocol::primitive::Variant; +use crate::primitive::Variant; use crate::util; extern crate bytes; +/// VariantMaps are represented as a HashMap with String as key and Variant as value +/// +/// They are serialized as the amount of keys as an i32 then for each entry a String and a Variant. pub type VariantMap = HashMap<String, Variant>; impl Serialize for VariantMap { @@ -36,25 +37,19 @@ impl Serialize for VariantMap { impl Deserialize for VariantMap { fn parse(b: &[u8]) -> Result<(usize, Self), Error> { let (_, len) = i32::parse(&b[0..4])?; - trace!(target: "protocol::primitive::VariantMap", "Parsing VariantMap with {:?} elements", len); + trace!(target: "primitive::VariantMap", "Parsing VariantMap with {:?} elements", len); let mut pos: usize = 4; let mut map = VariantMap::new(); for _ in 0..len { - trace!(target: "protocol::primitive::VariantMap", "Parsing entry name"); - // let (nlen, name) = Variant::parse(&b[pos..])?; + trace!(target: "primitive::VariantMap", "Parsing entry name"); let (nlen, name) = String::parse(&b[pos..])?; pos += nlen; - trace!(target: "protocol::primitive::VariantMap", "Parsing entry: {:?} with len {:?}", name, &b[(pos)..(pos + 4)]); + trace!(target: "primitive::VariantMap", "Parsing entry: {:?} with len {:?}", name, &b[(pos)..(pos + 4)]); let (vlen, value) = Variant::parse(&b[(pos)..])?; pos += vlen; - // match name { - // Variant::String(x) => map.insert(x, value), - // Variant::StringUTF8(x) => map.insert(x, value), - // _ => bail!(ProtocolError::WrongVariant), - // }; map.insert(name, value); } |
