use socket2::{Socket, TcpKeepalive};
use std::os::unix::io::AsRawFd;
use std::time::Duration;
use tokio::net::TcpStream;
pub fn configure(stream: &TcpStream) {
use std::os::unix::io::FromRawFd;
let fd = stream.as_raw_fd();
let fd_dup = unsafe { libc::dup(fd) };
if fd_dup < 0 {
return;
}
let sock = unsafe { Socket::from_raw_fd(fd_dup) };
let _ = sock.set_nodelay(true);
let keepalive = TcpKeepalive::new()
.with_time(Duration::from_secs(10))
.with_interval(Duration::from_secs(5))
.with_retries(3);
let _ = sock.set_tcp_keepalive(&keepalive);
}