1 // Copyright 2021 Ian Jackson and contributors to Hippotat
2 // SPDX-License-Identifier: GPL-3.0-or-later
3 // There is NO WARRANTY.
6 pub use std::collections::{BTreeSet, HashMap, VecDeque};
7 pub use std::convert::{TryFrom, TryInto};
8 pub use std::borrow::Cow;
9 pub use std::cmp::{min, max};
11 pub use std::fmt::{self, Debug, Display, Write as _};
12 pub use std::future::Future;
13 pub use std::io::{self, Cursor, ErrorKind, Read as _, Write as _};
16 pub use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
17 pub use std::path::{Path, PathBuf};
20 pub use std::pin::Pin;
21 pub use std::str::{self, FromStr};
22 pub use std::sync::Arc;
23 pub use std::task::Poll;
24 pub use std::time::{SystemTime, UNIX_EPOCH};
26 pub use anyhow::{anyhow, Context};
27 pub use cervine::Cow as Cervine;
29 pub use fehler::{throw, throws};
30 pub use futures::{poll, future};
31 pub use hyper::body::{Bytes, Buf as _};
33 pub use hyper_tls::HttpsConnector;
35 pub use itertools::{iproduct, Itertools};
36 pub use lazy_regex::{regex_is_match, regex_replace_all};
37 pub use log::{trace, debug, info, warn, error};
38 pub use structopt::StructOpt;
39 pub use thiserror::Error;
40 pub use tokio::io::{AsyncBufReadExt, AsyncWriteExt};
42 pub use tokio::select;
44 pub use tokio::time::Duration;
45 pub use void::{self, Void, ResultVoidExt, ResultVoidErrExt};
47 pub use crate::config::{self, InstanceConfig, u32Ext as _};
48 pub use crate::utils::*;
49 pub use crate::queue::*;
50 pub use crate::reporter::*;
51 pub use crate::types::*;
52 pub use crate::slip::*;
54 pub type ReqNum = u64;
56 pub use anyhow::Error as AE;
57 pub use ErrorKind as EK;
58 pub use PacketError as PE;
60 pub const SLIP_END: u8 = 0o300; // c0
61 pub const SLIP_ESC: u8 = 0o333; // db
62 pub const SLIP_ESC_END: u8 = 0o334; // dc
63 pub const SLIP_ESC_ESC: u8 = 0o335; // dd
64 pub const SLIP_MIME_ESC: u8 = b'-'; // 2d
66 pub use base64::STANDARD as BASE64_CONFIG;
68 pub fn default<T:Default>() -> T { Default::default() }