From 7cde729ee4b8f618727cd46ec2a2498595b5a058 Mon Sep 17 00:00:00 2001 From: Max Audron Date: Fri, 17 Jan 2020 16:03:59 +0100 Subject: add ClientLogin --- src/net.rs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'src/net.rs') diff --git a/src/net.rs b/src/net.rs index f1f7027..145256a 100644 --- a/src/net.rs +++ b/src/net.rs @@ -23,23 +23,35 @@ pub struct Client { impl Client { pub fn login(&mut self, user: &'static str, pass: &'static str, client: message::ClientInit) { use crate::protocol::message::handshake::{HandshakeDeserialize, HandshakeSerialize, HandshakeQRead, VariantMap}; - use crate::protocol::message::handshake::{ClientInit, ClientInitAck}; + use crate::protocol::message::handshake::{ClientInitAck, ClientLogin, ClientLoginAck, SessionInit}; self.tcp_stream.write(&client.serialize().unwrap()).unwrap(); let mut buf: Vec = [0; 2048].to_vec(); let len = VariantMap::read(&mut self.tcp_stream, &mut buf).unwrap(); buf.truncate(len); + let res = ClientInitAck::parse(&buf).unwrap(); + println!("res: {:?}", res); - let res = ClientInitAck::parse(&buf); - println!("{:?}", res) + let login = ClientLogin {user: user.to_string(), password: pass.to_string()}; + self.tcp_stream.write(&login.serialize().unwrap()).unwrap(); + + let mut buf: Vec = [0; 2048].to_vec(); + let len = VariantMap::read(&mut self.tcp_stream, &mut buf).unwrap(); + buf.truncate(len); + let _res = ClientLoginAck::parse(&buf).unwrap(); + + let mut buf: Vec = [0; 2048].to_vec(); + let len = VariantMap::read(&mut self.tcp_stream, &mut buf).unwrap(); + buf.truncate(len); + let res = SessionInit::parse(&buf).unwrap(); + + println!("res: {:?}", res); } } pub fn connect(address: &'static str, port: u32, tls: bool, compression: bool) -> Result { - use crate::protocol::primitive::serialize::Serialize; use crate::protocol::primitive::deserialize::Deserialize; - use crate::protocol::primitive::qread::QRead; //let mut s = BufWriter::new(TcpStream::connect(format!("{}:{}", address, port)).unwrap()); let mut s = TcpStream::connect(format!("{}:{}", address, port)).unwrap(); -- cgit v1.2.3