use std::{
net::{TcpStream, ToSocketAddrs},
time::Duration,
};
use crate::{Instrument, InstrumentError};
#[derive(Debug)]
pub struct TcpIpInterface {}
impl TcpIpInterface {
pub fn simple<A: ToSocketAddrs>(
sock_addr: A,
) -> Result<Instrument<TcpStream>, InstrumentError> {
let stream = TcpStream::connect(sock_addr)?;
let timeout = Duration::from_secs(3);
stream.set_write_timeout(Some(timeout))?;
stream.set_read_timeout(Some(timeout))?;
Ok(Instrument::new(stream, timeout))
}
pub fn full(stream: TcpStream) -> Result<Instrument<TcpStream>, InstrumentError> {
let timeout = stream.read_timeout()?.unwrap_or(Duration::from_secs(3));
Ok(Instrument::new(stream, timeout))
}
}