aboutsummaryrefslogtreecommitdiff
path: root/src/message/handshake
diff options
context:
space:
mode:
Diffstat (limited to 'src/message/handshake')
-rw-r--r--src/message/handshake/connack.rs4
-rw-r--r--src/message/handshake/init.rs3
-rw-r--r--src/message/handshake/mod.rs4
-rw-r--r--src/message/handshake/protocol.rs3
-rw-r--r--src/message/handshake/sessioninit.rs33
-rw-r--r--src/message/handshake/types.rs5
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> {