core/src/main.rs

81 lines
4.4 KiB
Rust
Raw Normal View History

2021-04-20 19:23:04 +00:00
mod api;
2020-11-01 16:46:47 +00:00
mod chat;
2020-11-22 14:31:45 +00:00
mod db;
mod encrypting;
2020-11-01 16:46:47 +00:00
use async_std::io;
2021-01-08 19:30:52 +00:00
use chat::front_conn::listen_client;
2021-01-09 14:03:00 +00:00
use chat::serv_conn::listen_server;
use chat::types::PackedMessage;
2021-03-11 06:53:47 +00:00
use log;
2021-04-20 19:23:04 +00:00
use serde_derive::Deserialize;
use simple_logger::SimpleLogger;
2020-11-22 14:31:45 +00:00
use std::{
sync::{
mpsc,
mpsc::{Receiver, Sender},
},
thread,
};
2020-11-22 16:19:32 +00:00
/*
+-----------------------------------------------------------------------------------+
| Client |
| |
| |
| +----------------------------+ +---------------------------------+ |
| | Thread 1 | | Thread 2 | | +-------------------+
+--------------+ | | +-----------------------+ | | +--------------------------+ | | | |
| | | | | Decode -----------------------> | | | | |
| ----------------------------> | | | | to JSON --------------------------------> |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | +-----------------------+ | | | | | | | |
| Server | | | | | +--------------------------+ | | | Frontend |
| | | | | | | | | |
| | | | +----------------------+ | | +-----------------------------+ | | | |
| | | | | | | | | | | | | |
| | | | | Encode | | | | | | | | |
2021-01-08 19:30:52 +00:00
| | | | | <----------------------------- from JSON <-------------------------------- |
2020-11-22 16:19:32 +00:00
| | | | | | | | | | | | | |
| | | | +----------------------+ | | +-----------------------------+ | | | |
+--------------+ | | | | | | | |
| +----------------------------+ +---------------------------------+ | +-------------------+
| |
*/
2021-01-05 13:58:18 +00:00
2021-04-20 19:23:04 +00:00
2020-11-01 16:46:47 +00:00
fn main() -> io::Result<()> {
SimpleLogger::new().with_level(log::LevelFilter::Debug).init().unwrap();
2021-02-27 21:58:55 +00:00
//TODO Add connection pool for ruqlite
2021-03-24 18:35:20 +00:00
let db = db::start_db().unwrap();
2021-04-29 05:54:01 +00:00
let d2 = db.clone();
//let manager = r2d2_foodb::FooConnectionManager::new("localhost:1234");
2021-01-08 10:35:42 +00:00
let (to_server_sender, server_receiver): (Sender<PackedMessage>, Receiver<PackedMessage>) =
mpsc::channel();
2021-01-24 18:06:06 +00:00
let (client_sender, client_receiver): (Sender<PackedMessage>, Receiver<PackedMessage>) =
mpsc::channel();
2020-11-22 14:31:45 +00:00
let server_thread = thread::spawn(move || {
2021-01-06 04:18:46 +00:00
let cs = client_sender;
let sr = server_receiver;
2020-11-22 14:31:45 +00:00
2021-04-29 05:54:01 +00:00
let t = thread::spawn(move || listen_server(cs, sr, d2));
2021-01-08 10:35:42 +00:00
2021-01-24 18:06:06 +00:00
t.join().expect("failed server thread").unwrap();
2020-11-22 14:31:45 +00:00
});
2021-01-24 18:06:06 +00:00
let client_thread = thread::spawn(move || {
2021-01-08 10:35:42 +00:00
let ss = to_server_sender;
let cr = client_receiver;
2021-01-08 10:35:42 +00:00
2021-03-24 18:35:20 +00:00
let t = thread::spawn(move || listen_client(ss, cr, db));
2020-11-22 14:31:45 +00:00
2021-01-24 18:06:06 +00:00
t.join().expect("failed client thread").unwrap();
2020-11-22 14:31:45 +00:00
});
2021-03-24 07:32:31 +00:00
server_thread.join().expect("failed to unrap server thread");
client_thread.join().expect("failed to unrap client thread");
2020-11-22 14:31:45 +00:00
Ok(())
2020-11-01 16:46:47 +00:00
}