1#![cfg_attr(docsrs, feature(doc_auto_cfg))]
23
24#[macro_use]
25extern crate amplify;
26#[cfg(feature = "log")]
27extern crate log_crate as log;
28
29pub mod frame;
30#[cfg(feature = "reactor")]
31pub mod tunnel;
32
33mod connection;
34mod listener;
35pub mod session;
36mod split;
37
38#[cfg(feature = "io-reactor")]
39pub mod resource;
40
41pub const READ_BUFFER_SIZE: usize = u16::MAX as usize;
42
43pub use connection::{Address, AsConnection, NetConnection, NetStream};
44pub use frame::{Frame, Marshaller};
45pub use listener::NetListener;
46#[cfg(feature = "io-reactor")]
47pub use resource::{ListenerEvent, NetAccept, NetTransport, SessionEvent};
48pub use session::{NetProtocol, NetSession, NetStateMachine};
49pub use split::{NetReader, NetWriter, SplitIo, SplitIoError, TcpReader, TcpWriter};
50
51#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug)]
52pub enum Direction {
53 Inbound,
54 Outbound,
55}
56
57impl Direction {
58 pub fn is_inbound(self) -> bool { matches!(self, Direction::Inbound) }
59 pub fn is_outbound(self) -> bool { matches!(self, Direction::Outbound) }
60}