#![doc(html_root_url = "https://docs.rs/tcp_typed/0.1.4")]
#![warn(
// missing_copy_implementations,
// missing_debug_implementations,
// missing_docs,
trivial_casts,
trivial_numeric_casts,
unused_import_braces,
unused_qualifications,
unused_results,
clippy::pedantic,
)] #![allow(
clippy::inline_always,
clippy::doc_markdown,
clippy::if_not_else,
clippy::indexing_slicing,
clippy::new_ret_no_self,
clippy::needless_pass_by_value
)]
mod circular_buffer;
mod connection;
mod connection_states;
mod socket_forwarder;
use std::{fmt, net, time};
#[cfg(unix)]
type Fd = std::os::unix::io::RawFd;
#[cfg(windows)]
type Fd = std::os::windows::io::RawHandle;
pub use connection::*;
pub use connection_states::*;
pub use socket_forwarder::*;
pub trait Notifier {
type InstantSlot;
fn queue(&self);
fn add_fd(&self, fd: Fd);
fn remove_fd(&self, fd: Fd);
fn add_instant(&self, instant: time::Instant) -> Self::InstantSlot;
fn remove_instant(&self, slot: Self::InstantSlot);
}
fn format_remote(addr: net::SocketAddr) -> RemoteAddr {
RemoteAddr(addr)
}
struct RemoteAddr(net::SocketAddr);
impl fmt::Display for RemoteAddr {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", &self.0)
}
}
const BUF: usize = 64 * 1024;
const LISTEN_BACKLOG: usize = 128;