#![deny(unused_must_use)]
pub(crate) mod collections;
pub(crate) mod metrics;
pub mod pool;
#[macro_use]
pub mod net;
pub mod cli;
pub mod codec;
pub mod config;
pub mod filters;
#[doc(hidden)]
pub mod test;
#[allow(
clippy::enum_variant_names,
clippy::large_enum_variant,
rustdoc::bare_urls
)]
mod generated;
pub type Result<T, E = eyre::Error> = std::result::Result<T, E>;
#[doc(inline)]
pub use self::{
cli::{Cli, Proxy},
config::Config,
};
pub use quilkin_macros::include_proto;
pub(crate) use self::net::maxmind_db::MaxmindDb;
#[derive(Copy, Clone, PartialEq, Default, Debug)]
pub enum ShutdownKind {
#[default]
Normal,
Testing,
Benching,
}
pub type ShutdownRx = tokio::sync::watch::Receiver<ShutdownKind>;
pub type ShutdownTx = tokio::sync::watch::Sender<ShutdownKind>;
#[inline]
pub fn make_shutdown_channel(init: ShutdownKind) -> (ShutdownTx, ShutdownRx) {
tokio::sync::watch::channel(init)
}
pub(crate) trait Loggable {
fn log(&self);
}
#[inline]
pub fn unix_timestamp() -> i64 {
time::OffsetDateTime::now_utc().unix_timestamp()
}
#[cfg(doctest)]
mod external_doc_tests {
#![doc = include_str!("../docs/src/services/proxy/filters.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/capture.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/compress.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/concatenate.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/debug.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/firewall.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/load_balancer.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/local_rate_limit.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/match.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/timestamp.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/token_router.md")]
#![doc = include_str!("../docs/src/services/proxy/filters/writing_custom_filters.md")]
#![doc = include_str!("../docs/src/services/xds/providers/filesystem.md")]
}