diff options
Diffstat (limited to 'src/message/handshake')
| -rw-r--r-- | src/message/handshake/connack.rs | 4 | ||||
| -rw-r--r-- | src/message/handshake/init.rs | 3 | ||||
| -rw-r--r-- | src/message/handshake/mod.rs | 4 | ||||
| -rw-r--r-- | src/message/handshake/protocol.rs | 3 | ||||
| -rw-r--r-- | src/message/handshake/sessioninit.rs | 33 | ||||
| -rw-r--r-- | src/message/handshake/types.rs | 5 |
6 files changed, 27 insertions, 25 deletions
diff --git a/src/message/handshake/connack.rs b/src/message/handshake/connack.rs index 222c08c..a246679 100644 --- a/src/message/handshake/connack.rs +++ b/src/message/handshake/connack.rs @@ -29,7 +29,7 @@ impl Default for ConnAck { } } -impl crate::Serialize for ConnAck { +impl crate::serialize::Serialize for ConnAck { fn serialize(&self) -> Result<Vec<std::primitive::u8>, Error> { let mut bytes: Vec<u8> = Vec::new(); @@ -41,7 +41,7 @@ impl crate::Serialize for ConnAck { } } -impl crate::Deserialize for ConnAck { +impl crate::deserialize::Deserialize for ConnAck { fn parse(b: &[u8]) -> Result<(usize, Self), Error> { let (flen, flags) = u8::parse(b)?; let (elen, extra) = i16::parse(&b[flen..])?; diff --git a/src/message/handshake/init.rs b/src/message/handshake/init.rs index b4604b6..df1b29e 100644 --- a/src/message/handshake/init.rs +++ b/src/message/handshake/init.rs @@ -1,5 +1,4 @@ -use crate::Deserialize; -use crate::Serialize; +use crate::{deserialize::Deserialize, serialize::Serialize}; /// The first few bytes sent to the core to initialize the connection and setup if we want to use tls and compression #[derive(Clone, Debug)] diff --git a/src/message/handshake/mod.rs b/src/message/handshake/mod.rs index c180c5e..029eb86 100644 --- a/src/message/handshake/mod.rs +++ b/src/message/handshake/mod.rs @@ -24,7 +24,7 @@ pub use protocol::*; pub use sessioninit::*; pub use types::*; -use crate::primitive::{Variant, VariantMap}; +use crate::primitive::VariantMap; use crate::{HandshakeDeserialize, HandshakeSerialize}; #[derive(Debug, Clone)] @@ -56,7 +56,7 @@ impl HandshakeDeserialize for HandshakeMessage { fn parse(b: &[u8]) -> Result<(usize, Self), failure::Error> { let (size, res) = VariantMap::parse(b)?; - let msgtype = match_variant!(&res["MsgType"], Variant::String); + let msgtype: String = (&res["MsgType"]).into(); match msgtype.as_str() { "ClientInit" => Ok((size, HandshakeMessage::ClientInit(res.into()))), "ClientInitAck" => Ok((size, HandshakeMessage::ClientInitAck(res.into()))), diff --git a/src/message/handshake/protocol.rs b/src/message/handshake/protocol.rs index d020f33..c12da05 100644 --- a/src/message/handshake/protocol.rs +++ b/src/message/handshake/protocol.rs @@ -1,5 +1,4 @@ -use crate::Deserialize; -use crate::Serialize; +use crate::{deserialize::Deserialize, serialize::Serialize}; pub enum Protocol { Legacy = 0x00000001, diff --git a/src/message/handshake/sessioninit.rs b/src/message/handshake/sessioninit.rs index d1b4b90..a663cce 100644 --- a/src/message/handshake/sessioninit.rs +++ b/src/message/handshake/sessioninit.rs @@ -1,3 +1,5 @@ +use std::convert::TryInto; + use crate::message::objects::Identity; use crate::primitive::{BufferInfo, Variant, VariantMap}; use crate::HandshakeSerialize; @@ -18,12 +20,15 @@ pub struct SessionInit { impl From<VariantMap> for SessionInit { fn from(input: VariantMap) -> Self { - let state = match_variant!(input.get("SessionState").unwrap(), Variant::VariantMap); + use crate::message::signalproxy::Network; + let state: VariantMap = input.get("SessionState").unwrap().try_into().unwrap(); + + log::trace!("sessionstate: {:#?}", state); + SessionInit { - identities: match_variant!(state.get("Identities").unwrap(), Variant::VariantList) - .iter() - .map(|ident| Identity::from(match_variant!(ident, Variant::VariantMap))) - .collect(), + identities: Vec::<Identity>::from_network( + &mut state.get("Identities").unwrap().try_into().unwrap(), + ), buffers: match_variant!(state.get("BufferInfos").unwrap(), Variant::VariantList) .iter() .map(|buffer| match buffer { @@ -49,15 +54,15 @@ impl HandshakeSerialize for SessionInit { "MsgType".to_string(), Variant::String("SessionInit".to_string()), ); - values.insert( - "Identities".to_string(), - Variant::VariantList( - self.identities - .iter() - .map(|ident| Variant::VariantMap(ident.clone().into())) - .collect(), - ), - ); + // values.insert( + // "Identities".to_string(), + // Variant::VariantList( + // self.identities + // .iter() + // .map(|ident| Variant::VariantMap(ident.clone().into())) + // .collect(), + // ), + // ); values.insert( "BufferInfos".to_string(), Variant::VariantList( diff --git a/src/message/handshake/types.rs b/src/message/handshake/types.rs index 24d847b..e9e6469 100644 --- a/src/message/handshake/types.rs +++ b/src/message/handshake/types.rs @@ -7,11 +7,10 @@ use failure::Error; use crate::error::ProtocolError; use crate::primitive::Variant; use crate::util; -use crate::Deserialize; -use crate::Serialize; +use crate::{deserialize::Deserialize, serialize::Serialize}; +use crate::message::handshake::{HandshakeDeserialize, HandshakeSerialize}; use crate::primitive::VariantMap; -use crate::{HandshakeDeserialize, HandshakeSerialize}; impl HandshakeSerialize for VariantMap { fn serialize<'a>(&'a self) -> Result<Vec<u8>, Error> { |
