replaced printlns with logging crate

This commit is contained in:
famfo 2021-12-22 19:03:49 +01:00
parent c47edc025a
commit 4b7318e8dc
3 changed files with 123 additions and 15 deletions

104
Cargo.lock generated
View file

@ -2,6 +2,15 @@
# It is not intended for manual editing.
version = 3
[[package]]
name = "ansi_term"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
dependencies = [
"winapi",
]
[[package]]
name = "anyhow"
version = "1.0.51"
@ -37,6 +46,12 @@ dependencies = [
"wasi",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.109"
@ -89,6 +104,12 @@ dependencies = [
"winapi",
]
[[package]]
name = "once_cell"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5"
[[package]]
name = "pin-project-lite"
version = "0.2.7"
@ -110,6 +131,8 @@ version = "0.1.0"
dependencies = [
"anyhow",
"tokio",
"tracing",
"tracing-subscriber",
"uuid",
]
@ -122,6 +145,21 @@ dependencies = [
"proc-macro2",
]
[[package]]
name = "sharded-slab"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
dependencies = [
"lazy_static",
]
[[package]]
name = "smallvec"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309"
[[package]]
name = "syn"
version = "1.0.82"
@ -133,6 +171,15 @@ dependencies = [
"unicode-xid",
]
[[package]]
name = "thread_local"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd"
dependencies = [
"once_cell",
]
[[package]]
name = "tokio"
version = "1.14.0"
@ -160,6 +207,63 @@ dependencies = [
"syn",
]
[[package]]
name = "tracing"
version = "0.1.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105"
dependencies = [
"cfg-if",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
]
[[package]]
name = "tracing-attributes"
version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "tracing-core"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4"
dependencies = [
"lazy_static",
]
[[package]]
name = "tracing-log"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3"
dependencies = [
"lazy_static",
"log",
"tracing-core",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "245da694cc7fc4729f3f418b304cb57789f1bed2a78c575407ab8a23f53cb4d3"
dependencies = [
"ansi_term",
"sharded-slab",
"smallvec",
"thread_local",
"tracing-core",
"tracing-log",
]
[[package]]
name = "unicode-xid"
version = "0.2.2"

View file

@ -5,6 +5,8 @@ edition = "2021"
[dependencies]
anyhow = "1"
tracing = "0.1"
tracing-subscriber = "0.3"
[dependencies.tokio]
version = "1.14.0"

View file

@ -1,13 +1,13 @@
use std::collections::HashMap;
use std::io;
use std::sync::Arc;
use tokio::io::AsyncBufReadExt;
use tokio::io::AsyncWriteExt;
use tokio::io::BufReader;
use tokio::net::{TcpListener, TcpStream};
use tokio::sync::broadcast::{self, Receiver, Sender};
use tokio::sync::Mutex;
use tokio::{select, spawn};
use std::{collections::HashMap, io, sync::Arc};
use tokio::{
io::{AsyncBufReadExt, AsyncWriteExt, BufReader},
net::{TcpListener, TcpStream},
select, spawn,
sync::{
broadcast::{self, Receiver, Sender},
Mutex,
},
};
use uuid::Uuid;
// TODO:
@ -32,6 +32,8 @@ enum ClientMessage {
#[tokio::main(flavor = "current_thread")]
async fn main() -> io::Result<()> {
tracing_subscriber::fmt::init();
let listener = TcpListener::bind("127.0.0.1:9090").await?;
let (br_send, _) = broadcast::channel::<BroadcastMessage>(1024);
let users: Arc<Mutex<HashMap<String, String>>> = Arc::new(Mutex::new(HashMap::new()));
@ -42,7 +44,7 @@ async fn main() -> io::Result<()> {
let users = users.clone();
spawn(async move {
if let Err(e) = connection_handler(socket, tx, rx, users).await {
println!("{:?}", e);
tracing::error!("{:?}", e);
}
});
}
@ -54,9 +56,9 @@ async fn connection_handler(
mut br_receiver: Receiver<BroadcastMessage>,
users: Arc<Mutex<HashMap<String, String>>>,
) -> anyhow::Result<()> {
println!("new client joined");
tracing::info!("new client joined");
let id = Uuid::new_v4().to_hyphenated().to_string();
println!("ID: {}", id);
tracing::info!("ID: {}", id);
let mut nick = String::from(id.split("-").collect::<Vec<&str>>()[0]);
users.lock().await.insert(id.clone(), nick.clone());
br_sender.send(BroadcastMessage::JOIN(nick.clone()))?;
@ -84,7 +86,7 @@ async fn connection_handler(
for (_, nick) in users.lock().await.iter() {
if nick == &new_nick {
should_change = false;
println!("{} tried to change to {} but it was taken", old_nick, new_nick);
tracing::info!("{} tried to change to {} but it was taken", old_nick, new_nick);
break;
}
}
@ -150,6 +152,6 @@ async fn connection_handler(
}
users.lock().await.remove(&id);
br_sender.send(BroadcastMessage::LEAVE(nick))?;
println!("Client {} disconnected", id);
tracing::info!("Client {} disconnected", id);
Ok(())
}