1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
#[macro_export] macro_rules! take_while_complete ( ($input:expr, $submac:ident!( $($args:tt)* )) => ({ use nom::InputTakeAtPosition; use nom::Err; let input = $input; match input.split_at_position(|c| !$submac!(c, $($args)*)) { Err(Err::Incomplete(_)) => Ok((&input[input.len()..], input)), res => res, } }); ($input:expr, $f:expr) => ( take_while_complete!($input, call!($f)); ); ); #[macro_export] macro_rules! take_while1_complete ( ($input:expr, $submac:ident!( $($args:tt)* )) => ({ use nom::InputTakeAtPosition; use nom::Err; use nom::error::ErrorKind; let input = $input; match input.split_at_position1(|c| !$submac!(c, $($args)*), ErrorKind::TakeWhile1) { Err(Err::Incomplete(_)) => Ok((&input[input.len()..], input)), res => res, } }); ($input:expr, $f:expr) => ( take_while1_complete!($input, call!($f)); ); ); #[macro_export] macro_rules! empty ( ($i:expr,) => ( { use std::result::Result::*; use nom::{Err,error::ErrorKind}; use nom::InputLength; if ($i).input_len() == 0 { Ok(($i, $i)) } else { Err(Err::Error(error_position!($i, ErrorKind::Eof))) } } ); ); pub mod http; pub mod pipe; #[cfg(feature = "use-openssl")] pub mod openssl; pub mod rustls; pub mod proxy_protocol; #[cfg(feature = "use-openssl")] pub use self::openssl::TlsHandshake; pub use self::pipe::Pipe; pub use self::http::{Http,StickySession}; pub use self::proxy_protocol::send::SendProxyProtocol; #[cfg(not(feature = "use-openssl"))] pub use self::rustls::TlsHandshake; #[derive(Debug,Clone,Copy,PartialEq)] pub enum ProtocolResult { Upgrade, Continue, }