spacegate_kernel/backend_service/
ws_client_service.rs1use hyper::upgrade::Upgraded;
2use hyper_util::rt::TokioIo;
3use tokio::{self};
4
5use crate::BoxError;
6
7pub(super) async fn tcp_transfer(as_server: Upgraded, as_client: Upgraded) -> Result<(), BoxError> {
9 let mut server_conn = TokioIo::new(as_server);
10 let mut client_conn = TokioIo::new(as_client);
11 tokio::task::spawn(async move {
12 let result = tokio::io::copy_bidirectional(&mut server_conn, &mut client_conn).await;
13 match result {
14 Ok((server_to_client, client_to_server)) => {
15 tracing::debug!("[SG.Upgraded] connection closed, server to client bytes: {server_to_client}, client to server bytes: {client_to_server}");
16 }
17 Err(error) => {
18 tracing::warn!("[SG.Upgraded] connection close error: {error}");
19 }
20 }
21 });
22 Ok(())
23}