tunneler_core/server/tcpforwarder/client/
tokio_tx.rs1use crate::{general::ConnectionWriter, message::Message};
2
3#[derive(Debug)]
4pub enum SendError {
5 QueueReceive,
6 IO(std::io::Error),
7}
8
9impl From<std::io::Error> for SendError {
10 fn from(other: std::io::Error) -> Self {
11 Self::IO(other)
12 }
13}
14
15pub async fn send<C>(
16 write_con: &mut C,
17 queue: &mut tokio::sync::mpsc::UnboundedReceiver<Message>,
18 header_buf: &mut [u8; 13],
19) -> Result<(), SendError>
20where
21 C: ConnectionWriter + Send,
22{
23 let msg = match queue.recv().await {
24 Some(m) => m,
25 None => return Err(SendError::QueueReceive),
26 };
27
28 write_con.write_msg(&msg, header_buf).await?;
29
30 Ok(())
31}