use nanoservices_utils::errors::{NanoServiceError, NanoServiceErrorStatus};
use surrealcs_kernel::messages::{
serialization::bincode_processes::message::serialize_server_message,
server::wrapper::WrappedServerMessage,
};
use tokio::{io::AsyncWriteExt, net::tcp::OwnedWriteHalf};
pub async fn send_message_over_tcp(
writer: &mut OwnedWriteHalf,
message: &WrappedServerMessage,
) -> Result<(), NanoServiceError> {
let msg = match serialize_server_message(message) {
Ok(msg) => msg,
Err(error) => {
return Err(error);
}
};
match writer.write_all(&msg).await {
Ok(_) => {}
Err(error) => {
return Err(NanoServiceError::new(
format!("Error sending message over the TCP connection: {:?}", error),
NanoServiceErrorStatus::Unknown,
));
}
}
Ok(())
}