diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..215332c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1609900445316
+
+
+ 1609900445316
+
+
+
+
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
index f6cf81c..e49ad88 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -94,7 +94,7 @@ dependencies = [
"memchr",
"num_cpus",
"once_cell",
- "pin-project-lite",
+ "pin-project-lite 0.1.10",
"pin-utils",
"slab",
"wasm-bindgen-futures",
@@ -155,7 +155,7 @@ dependencies = [
"log",
"native-tls",
"pin-project",
- "tokio",
+ "tokio 0.2.22",
"tokio-native-tls",
"tungstenite",
]
@@ -225,6 +225,12 @@ version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
+[[package]]
+name = "bytes"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0dcbc35f504eb6fc275a6d20e4ebcda18cf50d40ba6fabff8c711fa16cb3b16"
+
[[package]]
name = "cache-padded"
version = "1.1.1"
@@ -243,6 +249,12 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
[[package]]
name = "concurrent-queue"
version = "1.2.2"
@@ -281,7 +293,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
dependencies = [
"autocfg",
- "cfg-if",
+ "cfg-if 0.1.10",
"lazy_static",
]
@@ -417,7 +429,7 @@ dependencies = [
"futures-io",
"memchr",
"parking",
- "pin-project-lite",
+ "pin-project-lite 0.1.10",
"waker-fn",
]
@@ -490,7 +502,7 @@ version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"
dependencies = [
- "cfg-if",
+ "cfg-if 0.1.10",
"libc",
"wasi",
]
@@ -533,7 +545,7 @@ dependencies = [
"serde",
"serde_derive",
"serde_json",
- "tokio",
+ "tokio 0.3.6",
"toml",
"tungstenite",
]
@@ -544,7 +556,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9"
dependencies = [
- "bytes",
+ "bytes 0.5.6",
"fnv",
"itoa",
]
@@ -572,7 +584,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754"
dependencies = [
- "bytes",
+ "bytes 0.5.6",
]
[[package]]
@@ -581,7 +593,7 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66"
dependencies = [
- "cfg-if",
+ "cfg-if 0.1.10",
]
[[package]]
@@ -655,13 +667,22 @@ version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a"
+[[package]]
+name = "lock_api"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"
+dependencies = [
+ "scopeguard",
+]
+
[[package]]
name = "log"
version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"
dependencies = [
- "cfg-if",
+ "cfg-if 0.1.10",
]
[[package]]
@@ -691,7 +712,7 @@ version = "0.6.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430"
dependencies = [
- "cfg-if",
+ "cfg-if 0.1.10",
"fuchsia-zircon",
"fuchsia-zircon-sys",
"iovec",
@@ -705,26 +726,16 @@ dependencies = [
]
[[package]]
-name = "mio-named-pipes"
-version = "0.1.7"
+name = "mio"
+version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656"
+checksum = "e50ae3f04d169fcc9bde0b547d1c205219b7157e07ded9c5aff03e0637cb3ed7"
dependencies = [
- "log",
- "mio",
- "miow 0.3.5",
- "winapi 0.3.9",
-]
-
-[[package]]
-name = "mio-uds"
-version = "0.6.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0"
-dependencies = [
- "iovec",
"libc",
- "mio",
+ "log",
+ "miow 0.3.6",
+ "ntapi",
+ "winapi 0.3.9",
]
[[package]]
@@ -741,9 +752,9 @@ dependencies = [
[[package]]
name = "miow"
-version = "0.3.5"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e"
+checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897"
dependencies = [
"socket2",
"winapi 0.3.9",
@@ -783,11 +794,20 @@ version = "0.2.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853"
dependencies = [
- "cfg-if",
+ "cfg-if 0.1.10",
"libc",
"winapi 0.3.9",
]
+[[package]]
+name = "ntapi"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"
+dependencies = [
+ "winapi 0.3.9",
+]
+
[[package]]
name = "ntru"
version = "0.5.6"
@@ -810,9 +830,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.4.1"
+version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad"
+checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
[[package]]
name = "opaque-debug"
@@ -827,7 +847,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4"
dependencies = [
"bitflags",
- "cfg-if",
+ "cfg-if 0.1.10",
"foreign-types",
"lazy_static",
"libc",
@@ -859,6 +879,31 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
+[[package]]
+name = "parking_lot"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
+dependencies = [
+ "instant",
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272"
+dependencies = [
+ "cfg-if 1.0.0",
+ "instant",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "winapi 0.3.9",
+]
+
[[package]]
name = "percent-encoding"
version = "2.1.0"
@@ -891,6 +936,12 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e555d9e657502182ac97b539fb3dae8b79cda19e3e4f8ffb5e8de4f18df93c95"
+[[package]]
+name = "pin-project-lite"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e36743d754ccdf9954c2e352ce2d4b106e024c814f6499c2dadff80da9a442d8"
+
[[package]]
name = "pin-utils"
version = "0.1.0"
@@ -909,7 +960,7 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7215a098a80ab8ebd6349db593dc5faf741781bad0c4b7c5701fea6af548d52c"
dependencies = [
- "cfg-if",
+ "cfg-if 0.1.10",
"libc",
"log",
"wepoll-sys",
@@ -1067,6 +1118,12 @@ dependencies = [
"winapi 0.3.9",
]
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
[[package]]
name = "sct"
version = "0.6.0"
@@ -1135,7 +1192,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "170a36ea86c864a3f16dd2687712dd6646f7019f301e57537c7f4dc9f5916770"
dependencies = [
"block-buffer",
- "cfg-if",
+ "cfg-if 0.1.10",
"cpuid-bool",
"digest",
"opaque-debug",
@@ -1165,13 +1222,12 @@ checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252"
[[package]]
name = "socket2"
-version = "0.3.15"
+version = "0.3.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44"
+checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"
dependencies = [
- "cfg-if",
+ "cfg-if 1.0.0",
"libc",
- "redox_syscall",
"winapi 0.3.9",
]
@@ -1198,7 +1254,7 @@ version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
dependencies = [
- "cfg-if",
+ "cfg-if 0.1.10",
"libc",
"rand",
"redox_syscall",
@@ -1218,18 +1274,29 @@ version = "0.2.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd"
dependencies = [
- "bytes",
- "fnv",
- "futures-core",
+ "bytes 0.5.6",
"iovec",
"lazy_static",
+ "mio 0.6.22",
+ "pin-project-lite 0.1.10",
+]
+
+[[package]]
+name = "tokio"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "720ba21c25078711bf456d607987d95bce90f7c3bea5abe1db587862e7a1e87c"
+dependencies = [
+ "autocfg",
+ "bytes 0.6.0",
+ "futures-core",
"libc",
"memchr",
- "mio",
- "mio-named-pipes",
- "mio-uds",
+ "mio 0.7.7",
"num_cpus",
- "pin-project-lite",
+ "once_cell",
+ "parking_lot",
+ "pin-project-lite 0.2.1",
"signal-hook-registry",
"slab",
"tokio-macros",
@@ -1238,9 +1305,9 @@ dependencies = [
[[package]]
name = "tokio-macros"
-version = "0.2.5"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389"
+checksum = "46dfffa59fc3c8aad216ed61bdc2c263d2b9d87a9c8ac9de0c11a813e51b6db7"
dependencies = [
"proc-macro2",
"quote",
@@ -1254,7 +1321,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd608593a919a8e05a7d1fc6df885e40f6a88d3a70a3a7eff23ff27964eda069"
dependencies = [
"native-tls",
- "tokio",
+ "tokio 0.2.22",
]
[[package]]
@@ -1274,7 +1341,7 @@ checksum = "f0308d80d86700c5878b9ef6321f020f29b1bb9d5ff3cab25e75e23f3a492a23"
dependencies = [
"base64",
"byteorder",
- "bytes",
+ "bytes 0.5.6",
"http",
"httparse",
"input_buffer",
@@ -1375,7 +1442,7 @@ version = "0.2.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42"
dependencies = [
- "cfg-if",
+ "cfg-if 0.1.10",
"wasm-bindgen-macro",
]
@@ -1400,7 +1467,7 @@ version = "0.4.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da"
dependencies = [
- "cfg-if",
+ "cfg-if 0.1.10",
"js-sys",
"wasm-bindgen",
"web-sys",
diff --git a/Cargo.toml b/Cargo.toml
index 5225bad..165af08 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,7 +11,7 @@ ntru = "0.5.6"
rusqlite = "0.24.0"
toml = "0.5.6"
tungstenite = "0.11.1"
-tokio = { version = "0.2", features = ["full"] }
+tokio = { version = "0.3.3", features = ["full"] }
log = "0.4.11"
futures = "0.3.6"
async-std = "1.6.5"
diff --git a/src/chat/front_conn.rs b/src/chat/front_conn.rs
index 04a0570..404c0be 100644
--- a/src/chat/front_conn.rs
+++ b/src/chat/front_conn.rs
@@ -8,9 +8,10 @@ use async_tungstenite::{accept_async, tungstenite::Message, WebSocketStream};
use futures::{SinkExt, StreamExt};
use serde_derive::Deserialize;
use std::env;
-use std::sync::mpsc::Sender;
+use std::sync::mpsc::{Receiver, Sender};
type SP = Sender;
+type RP = Receiver;
pub fn listen_client(server_sender: SP) -> io::Result<()> {
task::block_on(connect_to_client(server_sender))
@@ -23,12 +24,10 @@ async fn connect_to_client(server_sender: SP) -> io::Result<()> {
let listener = TcpListener::bind(&addr).await?;
- println!("Debugging!");
while let Ok((stream, _)) = listener.accept().await {
let ss = server_sender.clone();
task::spawn(accept_client(stream, ss));
}
- println!("Debugging 2!");
Ok(())
}
@@ -92,3 +91,10 @@ async fn accept_client(stream: TcpStream, server_sender: SP) -> io::Result<()> {
Ok(())
}
+
+pub fn responding_to_server(server_sender: SP, client_receiver: RP) -> io::Result<()> {
+ while let Ok(res) = client_receiver.recv() {
+ println!("From SERVER!:\n {}", res.message);
+ }
+ Ok(())
+}
diff --git a/src/chat/serv_conn.rs b/src/chat/serv_conn.rs
index fa681af..4c31e88 100644
--- a/src/chat/serv_conn.rs
+++ b/src/chat/serv_conn.rs
@@ -4,13 +4,14 @@ use async_std::task;
use futures::{SinkExt, StreamExt};
use serde_derive::Deserialize;
use std::env;
-use std::sync::mpsc::Sender;
+use std::sync::mpsc::{Receiver, Sender};
use tokio::{
io::{self, AsyncReadExt, AsyncWriteExt},
net::{TcpListener, TcpStream},
};
type SP = Sender;
+type RP = Receiver;
#[tokio::main]
pub async fn listen_server(client_sender: SP) -> io::Result<()> {
@@ -22,11 +23,8 @@ async fn connect_to_server(client_sender: SP) -> io::Result<()> {
.nth(1)
.unwrap_or_else(|| "127.0.0.1:9481".to_string());
- println!("Thats All?!");
let stream = TcpStream::connect(&addr).await.expect("weeror here");
- println!("stream created");
let (mut receiver, mut sender) = stream.into_split();
- println!("FSFDSFD");
let _ = sender
.write(("ClientHello\nName=ggg\nExpectedVersion=2.0\nEndMessage\n\n").as_bytes())
.await?;
@@ -63,3 +61,10 @@ async fn accept_server(stream: TcpStream, client_sender: SP) -> io::Result<()> {
println!("Peer address: {}", addr);
Ok(())
}
+
+pub fn responding_to_client(client_sender: SP, server_receiver: RP) -> io::Result<()> {
+ while let Ok(res) = server_receiver.recv() {
+ println!("From SERVER!:\n {}", res.message);
+ }
+ Ok(())
+}
diff --git a/src/main.rs b/src/main.rs
index 8adb4cf..7026c7f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -3,8 +3,8 @@ mod db;
mod encrypting;
mod fcpv2;
use async_std::io;
-use chat::front_conn::listen_client;
-use chat::serv_conn::listen_server;
+use chat::front_conn::{listen_client, responding_to_server};
+use chat::serv_conn::{listen_server, responding_to_client};
use chat::types::PackedMessage;
use async_std::task;
@@ -44,7 +44,7 @@ use std::{
*/
fn main() -> io::Result<()> {
- let (server_sender, server_receiver): (Sender, Receiver) =
+ let (to_server_sender, server_receiver): (Sender, Receiver) =
mpsc::channel();
let (client_sender, client_receiver): (Sender, Receiver) =
mpsc::channel();
@@ -52,16 +52,29 @@ fn main() -> io::Result<()> {
let server_thread = thread::spawn(move || {
let cs = client_sender;
let sr = server_receiver;
+ let cs1 = cs.clone();
+ let cs2 = cs.clone();
- thread::spawn(|| listen_server(cs));
- println!("Multithreadding YAY!!! {}", sr.recv().unwrap().message);
+ let t1 = thread::spawn(move || listen_server(cs1));
+ let t2 = thread::spawn(move || responding_to_client(cs2, sr));
+
+ t1.join();
+ t2.join();
+ // while let Ok(res) = sr.recv() {
+ // println!("From Server:\n {}", res.message);
+ // }
});
let client_thread = thread::spawn(move || {
- let ss = server_sender;
+ let ss = to_server_sender;
let cr = client_receiver;
+ let ss1 = ss.clone();
+ let ss2 = ss.clone();
- thread::spawn(|| listen_client(ss));
- println!("From Server Yaaay {}", cr.recv().unwrap().message);
+ let t1 = thread::spawn(move || listen_client(ss1.clone()));
+ let t2 = thread::spawn(move || responding_to_server(ss2.clone(), cr));
+
+ t1.join();
+ t2.join();
});
server_thread.join();
client_thread.join();