Better error messages
This commit is contained in:
parent
71e412f3be
commit
8513bafad6
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1,3 @@
|
||||
/target
|
||||
perf.data
|
||||
perf.data.old
|
||||
|
||||
29
src/main.rs
29
src/main.rs
@ -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(())
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user