Struct Request

Source
pub struct Request<'headers, 'buf: 'headers> {
    pub method: Option<&'buf str>,
    pub path: Option<&'buf str>,
    pub version: Option<SipVersion>,
    pub headers: &'headers mut [Header<'buf>],
}
Expand description

A parsed Request.

The optional values will be None if a parse was not complete, and did not parse the associated property. This allows you to inspect the parts that could be parsed, before reading more, in case you wish to exit early.

§Example

let buf = b"INVITE sip:callee@domain.com SIP/2.0\r\nHost:";
let mut headers = [parsip::EMPTY_HEADER; 16];
let mut req = parsip::Request::new(&mut headers);
let res = req.parse(buf);
if let parsip::IResult::Incomplete(_) = res {
    match req.path {
        Some(ref path) => {
            // check router for path.
            // is domain.com unreachable? we could stop parsing
        },
        None => {
            // must read more and parse again
        }
    }
}

Fields§

§method: Option<&'buf str>

The request method, such as INVITE.

§path: Option<&'buf str>

The request path, such as sip:callee@domain.com.

§version: Option<SipVersion>

The request version, such as SIP/2.0.

§headers: &'headers mut [Header<'buf>]

The request headers.

Implementations§

Source§

impl<'h, 'b> Request<'h, 'b>

Source

pub fn new(headers: &'h mut [Header<'b>]) -> Request<'h, 'b>

Creates a new Request, using a slice of headers you allocate.

Source

pub fn parse(&mut self, buf: &'b [u8]) -> IResult<&'b [u8], usize>

Request-Line  =  Method SP Request-URI SP SIP-Version CRLF

Trait Implementations§

Source§

impl<'headers, 'buf: 'headers> Debug for Request<'headers, 'buf>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'headers, 'buf: 'headers> PartialEq for Request<'headers, 'buf>

Source§

fn eq(&self, other: &Request<'headers, 'buf>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'headers, 'buf: 'headers> StructuralPartialEq for Request<'headers, 'buf>

Auto Trait Implementations§

§

impl<'headers, 'buf> Freeze for Request<'headers, 'buf>

§

impl<'headers, 'buf> RefUnwindSafe for Request<'headers, 'buf>

§

impl<'headers, 'buf> Send for Request<'headers, 'buf>

§

impl<'headers, 'buf> Sync for Request<'headers, 'buf>

§

impl<'headers, 'buf> Unpin for Request<'headers, 'buf>

§

impl<'headers, 'buf> !UnwindSafe for Request<'headers, 'buf>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.