diff options
| author | Max Audron <audron@cocaine.farm> | 2021-01-04 18:22:47 +0100 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2021-01-04 18:23:20 +0100 |
| commit | 2207285cb51ac8917545a05cafdb6765fdde17e6 (patch) | |
| tree | 0758b640ff2a1e75ea9e404fda697a3240ee9868 /src/primitive/variant.rs | |
| parent | fix parsing of datetime when value is -1 (diff) | |
add message parsing feature flags
Diffstat (limited to '')
| -rw-r--r-- | src/primitive/variant.rs | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/primitive/variant.rs b/src/primitive/variant.rs index 9242d90..be2bebe 100644 --- a/src/primitive/variant.rs +++ b/src/primitive/variant.rs @@ -36,6 +36,7 @@ pub enum Variant { VariantList(VariantList), String(String), StringUTF8(String), + ByteArray(String), StringList(StringList), bool(bool), u64(u64), @@ -77,6 +78,11 @@ impl Serialize for Variant { res.extend(unknown.to_be_bytes().iter()); res.extend(v.serialize_utf8()?.iter()); } + Variant::ByteArray(v) => { + res.extend(primitive::QBYTEARRAY.to_be_bytes().iter()); + res.extend(unknown.to_be_bytes().iter()); + res.extend(v.serialize_utf8()?.iter()); + } Variant::StringList(v) => { res.extend(primitive::QSTRINGLIST.to_be_bytes().iter()); res.extend(unknown.to_be_bytes().iter()); @@ -201,8 +207,7 @@ impl Deserialize for Variant { return Ok((len + vlen, Variant::StringList(value.clone()))); } primitive::QDATETIME => { - trace!(target: "primitive::Variant", "Parsing Variant: Date"); - // let (vlen, value) = DateTime::parse(&b[len..])?; + trace!(target: "primitive::Variant", "Parsing Variant: DateTime"); let (vlen, value): (usize, DateTime) = Deserialize::parse(&b[len..])?; return Ok((len + vlen, Variant::DateTime(value.clone()))); } @@ -269,12 +274,26 @@ impl Deserialize for Variant { return Ok((len + user_type_len + vlen, Variant::VariantMap(value))); } // As i32 - "BufferId" | "IdentityId" | "NetworkId" | "MsgId" => { + "BufferId" | "IdentityId" | "NetworkId" => { trace!(target: "primitive::Variant", "UserType is i32"); let (vlen, value) = i32::parse(&b[(len + user_type_len)..])?; return Ok((len + user_type_len + vlen, Variant::i32(value))); } + #[cfg(not(feature = "long-message-id"))] + "MsgId" => { + trace!(target: "primitive::Variant", "UserType is i32"); + + let (vlen, value) = i32::parse(&b[(len + user_type_len)..])?; + return Ok((len + user_type_len + vlen, Variant::i32(value))); + } + #[cfg(feature = "long-message-id")] + "MsgId" => { + trace!(target: "primitive::Variant", "UserType is i64"); + + let (vlen, value) = i64::parse(&b[(len + user_type_len)..])?; + return Ok((len + user_type_len + vlen, Variant::i64(value))); + } // As i64 "PeerPtr" => { trace!(target: "primitive::Variant", "UserType is i64"); |
