Better error messages
This commit is contained in:
parent
71e412f3be
commit
8513bafad6
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1,3 @@
|
|||||||
/target
|
/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::io::{AsyncReadExt, AsyncWriteExt};
|
||||||
use tokio::net::TcpListener;
|
use tokio::net::TcpListener;
|
||||||
use tokio::sync::broadcast;
|
use tokio::sync::broadcast::{self, error::RecvError::Lagged};
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> std::io::Result<()> {
|
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?;
|
let listener = TcpListener::bind("127.0.0.1:8001").await?;
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let (stream, addr) = listener.accept().await?;
|
let (stream, addr) = listener.accept().await?;
|
||||||
println!("{addr} Connected");
|
println!("{addr} Connected");
|
||||||
@ -21,20 +22,32 @@ async fn main() -> std::io::Result<()> {
|
|||||||
}
|
}
|
||||||
let data = buffer[..len].to_vec();
|
let data = buffer[..len].to_vec();
|
||||||
if tx_bus.send(data).is_err() {
|
if tx_bus.send(data).is_err() {
|
||||||
|
println!("{} tcp reader bus error", &addr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
println!("{} tcp reader exit", &addr);
|
||||||
});
|
});
|
||||||
|
|
||||||
tokio::task::spawn(async move {
|
tokio::task::spawn(async move {
|
||||||
while let Ok(data) = rx_bus.recv().await {
|
loop {
|
||||||
let owned_data = data.to_vec();
|
match rx_bus.recv().await {
|
||||||
if tx_tcp.write_all(&owned_data).await.is_err() {
|
Ok(data) => {
|
||||||
break;
|
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