Better error messages

This commit is contained in:
Lucas Schumacher 2023-12-30 11:15:44 -05:00
parent 71e412f3be
commit 8513bafad6
2 changed files with 23 additions and 8 deletions

2
.gitignore vendored
View File

@ -1 +1,3 @@
/target
perf.data
perf.data.old

View File

@ -1,11 +1,12 @@
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::net::TcpListener;
use tokio::sync::broadcast;
use tokio::sync::broadcast::{self, error::RecvError::Lagged};
#[tokio::main]
async fn main() -> std::io::Result<()> {
let (tx, _rx) = broadcast::channel(128);
let (tx, _rx) = broadcast::channel(256);
let listener = TcpListener::bind("127.0.0.1:8001").await?;
loop {
let (stream, addr) = listener.accept().await?;
println!("{addr} Connected");
@ -21,20 +22,32 @@ async fn main() -> std::io::Result<()> {
}
let data = buffer[..len].to_vec();
if tx_bus.send(data).is_err() {
println!("{} tcp reader bus error", &addr);
break;
}
}
println!("{} tcp reader exit", &addr);
});
tokio::task::spawn(async move {
while let Ok(data) = rx_bus.recv().await {
let owned_data = data.to_vec();
if tx_tcp.write_all(&owned_data).await.is_err() {
break;
loop {
match rx_bus.recv().await {
Ok(data) => {
if let Err(e) = tx_tcp.write_all(&data).await {
println!("{} tcp writer error {}", &addr, e);
break;
}
}
Err(Lagged(i)) => {
eprintln!("Warning: {} dropped {} packets", &addr, i);
}
Err(e) => {
eprintln!("rx bus error: {}", e);
break;
}
}
}
println!("{} tcp writer exit", &addr);
});
}
//Ok(())
}