tokio::select version
This commit is contained in:
parent
9d89ad1d1d
commit
47786912c8
1 changed files with 24 additions and 32 deletions
|
|
@ -50,42 +50,34 @@ pub async fn handle_request(socket: TcpStream, upstream: TcpStream) -> Result<()
|
||||||
let mut farmed_server_read = FramedRead::new(server_read, LinesCodec::new());
|
let mut farmed_server_read = FramedRead::new(server_read, LinesCodec::new());
|
||||||
let mut framed_server_write = FramedWrite::new(server_write, LinesCodec::new());
|
let mut framed_server_write = FramedWrite::new(server_write, LinesCodec::new());
|
||||||
|
|
||||||
let read_client_write_upstream = tokio::spawn(async move {
|
loop {
|
||||||
while let Some(response) = framed_client_read.next().await {
|
tokio::select! {
|
||||||
match response {
|
Some(response) = framed_client_read.next() => {
|
||||||
Ok(message) => {
|
match response {
|
||||||
info!("Send upstream: {message}");
|
Ok(message) => {
|
||||||
let _ = framed_server_write.send(replace_address(message)).await;
|
info!("Send upstream: {message}");
|
||||||
|
let _ = framed_server_write.send(replace_address(message)).await;
|
||||||
|
}
|
||||||
|
Err(err) => {
|
||||||
|
error!("Error reading from client: {err}");
|
||||||
|
return Err(err.into());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
}
|
||||||
error!("Error reading from client: {err}");
|
Some(response) = farmed_server_read.next() => {
|
||||||
return Err(err);
|
match response {
|
||||||
|
Ok(message) => {
|
||||||
|
info!("Send to client: {message}");
|
||||||
|
let _ = framed_client_write.send(replace_address(message)).await;
|
||||||
|
}
|
||||||
|
Err(err) => {
|
||||||
|
error!("Error reading from server: {err}");
|
||||||
|
return Err(err.into());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
Ok(())
|
|
||||||
});
|
|
||||||
|
|
||||||
let read_upstream_write_client = tokio::spawn(async move {
|
|
||||||
while let Some(response) = farmed_server_read.next().await {
|
|
||||||
match response {
|
|
||||||
Ok(message) => {
|
|
||||||
info!("Send to client: {message}");
|
|
||||||
let _ = framed_client_write.send(replace_address(message)).await;
|
|
||||||
}
|
|
||||||
Err(err) => {
|
|
||||||
error!("Error reading from server: {err}");
|
|
||||||
return Err(err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn replace_address(message: String) -> String {
|
fn replace_address(message: String) -> String {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue