use crate::binary::struct_trait::{recv::Recv, session::Session};
use std::error::Error;
use std::io::Read;
use std::marker;
use std::net::TcpStream;
type TcpData = [u8; 128];
type TupleRecv<T, S> = (T, S, TcpData, TcpStream);
#[cfg_attr(
doc_cfg,
doc(cfg(any(feature = "transport", feature = "transport_tcp")))
)]
pub fn recv_tcp<T, S>(
s: Recv<(T, TcpData), S>,
mut stream: TcpStream,
tcp: bool,
) -> Result<TupleRecv<T, S>, Box<dyn Error>>
where
T: marker::Send,
S: Session,
{
let (v, s) = s.channel.recv()?;
let mut data = [0_u8; 128];
match tcp {
true => {
stream.read_exact(&mut data)?
}
false => (),
};
Ok((v.0, s, data, stream))
}