pub struct Header<'a> {
pub header: Cow<'a, str>,
pub addresses: Addresses,
}
Expand description
A text PROXY protocol header that borrows the input string.
§Examples
§Worst Case (from bytes)
use rama_haproxy::protocol::v1::{Addresses, Header, UNKNOWN};
let input = "PROXY UNKNOWN ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 65535 65535\r\n";
let header = Header::try_from(input.as_bytes()).unwrap();
assert_eq!(header, Header::new(input, Addresses::Unknown));
assert_eq!(header.protocol(), UNKNOWN);
assert_eq!(header.addresses_str(), "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 65535 65535");
§UNKNOWN
use rama_haproxy::protocol::v1::{Addresses, Header, UNKNOWN};
let input = "PROXY UNKNOWN\r\nhello";
let header = Header::try_from(input).unwrap();
assert_eq!(header, Header::new("PROXY UNKNOWN\r\n", Addresses::Unknown));
assert_eq!(header.protocol(), UNKNOWN);
assert_eq!(header.addresses_str(), "");
§TCP4
use std::net::Ipv4Addr;
use rama_haproxy::protocol::v1::{Header, Addresses, TCP4};
let input = "PROXY TCP4 127.0.1.2 192.168.1.101 80 443\r\n";
let header = Header::try_from(input).unwrap();
assert_eq!(header, Header::new(input, Addresses::new_tcp4(Ipv4Addr::new(127, 0, 1, 2), Ipv4Addr::new(192, 168, 1, 101), 80, 443)));
assert_eq!(header.protocol(), TCP4);
assert_eq!(header.addresses_str(), "127.0.1.2 192.168.1.101 80 443");
§TCP6
use std::net::Ipv6Addr;
use rama_haproxy::protocol::v1::{Header, Addresses, TCP6};
let input = "PROXY TCP6 1234:5678:90ab:cdef:fedc:ba09:8765:4321 4321:8765:ba09:fedc:cdef:90ab:5678:1234 443 65535\r\n";
let header = Header::try_from(input).unwrap();
assert_eq!(
header,
Header::new(
input,
Addresses::new_tcp6(
Ipv6Addr::from([0x1234, 0x5678, 0x90AB, 0xCDEF, 0xFEDC, 0xBA09, 0x8765, 0x4321]),
Ipv6Addr::from([0x4321, 0x8765, 0xBA09, 0xFEDC, 0xCDEF, 0x90AB, 0x5678, 0x01234,]),
443,
65535
)
)
);
assert_eq!(header.protocol(), TCP6);
assert_eq!(header.addresses_str(), "1234:5678:90ab:cdef:fedc:ba09:8765:4321 4321:8765:ba09:fedc:cdef:90ab:5678:1234 443 65535");
§Invalid
use rama_haproxy::protocol::v1::{Header, Addresses, ParseError};
assert_eq!(Err(ParseError::InvalidProtocol), "PROXY tcp4\r\n".parse::<Addresses>());
Fields§
§header: Cow<'a, str>
The original input string.
addresses: Addresses
The source and destination addresses of the header.
Implementations§
Source§impl<'a> Header<'a>
impl<'a> Header<'a>
Trait Implementations§
impl<'a> Eq for Header<'a>
impl<'a> StructuralPartialEq for Header<'a>
Auto Trait Implementations§
impl<'a> Freeze for Header<'a>
impl<'a> RefUnwindSafe for Header<'a>
impl<'a> Send for Header<'a>
impl<'a> Sync for Header<'a>
impl<'a> Unpin for Header<'a>
impl<'a> UnwindSafe for Header<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more