Request

Struct Request 

Source
pub struct Request<State: Clone + Send + Sync + 'static> { /* private fields */ }
Available on crate features clients or servers only.
Expand description

A request that came from either a TCP/UDP source.

Implementations§

Source§

impl<State> Request<State>
where State: Default + Clone + Send + Sync + 'static,

Source

pub fn new( body: Bytes, source_address: SocketAddr, stream_id: Option<u64>, ) -> Self

Source§

impl<State: Clone + Send + Sync + 'static> Request<State>

Source

pub fn new_with_state( body: Bytes, source_address: SocketAddr, state: State, stream_id: Option<u64>, ) -> Self

Source

pub fn new_with_state_and_read_amount( body: Bytes, source_address: SocketAddr, state: State, stream_id: Option<u64>, explicit_read_amount: usize, ) -> Self

Available on crate feature clients only.
Source

pub fn new_with_state_and_stream( body: Bytes, source_address: SocketAddr, state: State, stream_id: Option<u64>, stream_and_nagle_cache: Arc<Mutex<Option<(Option<BytesMut>, TcpStream)>>>, ) -> Self

Available on crate feature servers only.
Source

pub fn swap_body(&mut self, new_body: Bytes)

Swap the body of the request to something new.

Source

pub const fn update_request_source( &mut self, source: SocketAddr, stream_id: Option<u64>, )

Update the core request source.

Source

pub fn stream_id(&self) -> u64

A unique identifier for the “stream” or connection of a packet.

In UDP which doesn’t have stream this uses the source address as the core identifier.

Source

pub const fn explicit_read_amount(&self) -> Option<usize>

Available on crate feature clients only.

A client has requested we send this request, and then read an explicit amount of bytes, ignoring whatever the current NAGLE method is.

This is a utility only available when we are a client, and are receiving a packet that changes what our nagle split is for it’s specific response while keeping the nagle the same otherwise.

Source

pub const fn set_explicit_read_amount(&mut self, new_read_amount: usize)

Available on crate feature clients only.

Override the current NAGLE algorithm being used by this client for this single request/response pair. Do a single non-nagle’d receive.

Source

pub async fn unsafe_read_more_bytes_from_stream( &self, to_read: usize, ) -> Result<Bytes, CatBridgeError>

Available on crate feature servers only.

Attempt to read more bytes from the TCP Stream directly.

This is a utility only available when we are a server, and need to request more info from the client.

THIS WILL BYPASS EVERYYTHING PROVIDED BY TCP SERVER, AND JUST READ RAW BYTES FROM THE STREAM. This is only for requests like File I/O which need to bypass all the logic provided by the stream classes.

§Errors

If the request has been moved outside of it’s original processing place, and it is no longer possible to read from the stream.

Source

pub const fn body(&self) -> &Bytes

Source

pub fn body_mut(&mut self) -> &mut Bytes

Source

pub fn set_body(&mut self, new_body: Bytes)

Source

pub fn body_owned(self) -> Bytes

Source

pub const fn extensions(&self) -> &Extensions

Source

pub fn extensions_mut(&mut self) -> &mut Extensions

Source

pub fn extensions_owned(self) -> Extensions

Source

pub const fn state(&self) -> &State

Source

pub fn state_mut(&mut self) -> &mut State

Source

pub const fn source(&self) -> &SocketAddr

Source

pub fn is_ipv4(&self) -> bool

Source

pub fn is_ipv6(&self) -> bool

Trait Implementations§

Source§

impl<State: Clone + Send + Sync + 'static> Clone for Request<State>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<State> Debug for Request<State>
where State: Debug + Clone + Send + Sync + 'static,

Source§

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

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

impl<Ty, State: Clone + Send + Sync + 'static> FromRef<Request<State>> for Option<Extension<Ty>>
where Ty: Clone + Send + Sync + 'static,

Available on crate feature servers only.
Source§

fn from_ref(input: &Request<State>) -> Self

Converts to this type from a reference to the input type.
Source§

impl<State: Clone + Send + Sync + 'static> FromRequest<State> for Request<State>

Source§

async fn from_request(req: Request<State>) -> Result<Self, CatBridgeError>

Source§

impl<ServiceTy, ExtensionTy, State> Service<Request<State>> for AddExtension<ServiceTy, ExtensionTy>
where ServiceTy: Service<Request<State>>, ExtensionTy: Clone + Send + Sync + 'static, State: Clone + Send + Sync + 'static,

Available on crate feature servers only.
Source§

type Response = <ServiceTy as Service<Request<State>>>::Response

Responses given by the service.
Source§

type Error = <ServiceTy as Service<Request<State>>>::Error

Errors produced by the service.
Source§

type Future = <ServiceTy as Service<Request<State>>>::Future

The future response value.
Source§

fn poll_ready(&mut self, ctx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Request<State>) -> Self::Future

Process the request and return the response asynchronously. Read more
Source§

impl<HandlerTy, HandlerParamsTy, State: Clone + Send + Sync + 'static> Service<Request<State>> for HandlerAsService<HandlerTy, HandlerParamsTy>
where HandlerTy: Handler<HandlerParamsTy, State> + Clone + Send + 'static,

Available on crate feature servers only.
Source§

type Response = Response

Responses given by the service.
Source§

type Error = CatBridgeError

Errors produced by the service.
Source§

type Future = <HandlerTy as Handler<HandlerParamsTy, State>>::Future

The future response value.
Source§

fn poll_ready( &mut self, _ctx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Request<State>) -> Self::Future

Process the request and return the response asynchronously. Read more
Source§

impl<Layered, State: Clone + Send + Sync + 'static> Service<Request<State>> for LayeredRequestID<Layered>
where Layered: Service<Request<State>, Response = Response, Error = Infallible> + Clone + Send + 'static, Layered::Future: Send + 'static,

Source§

type Response = <Layered as Service<Request<State>>>::Response

Responses given by the service.
Source§

type Error = <Layered as Service<Request<State>>>::Error

Errors produced by the service.
Source§

type Future = Instrumented<<Layered as Service<Request<State>>>::Future>

The future response value.
Source§

fn poll_ready(&mut self, ctx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Request<State>) -> Self::Future

Process the request and return the response asynchronously. Read more
Source§

impl<Layered, State: Clone + Send + Sync + 'static> Service<Request<State>> for LayeredSataConnectionFlags<Layered>
where Layered: Service<Request<State>, Response = Response, Error = Infallible> + Clone + Send + 'static, Layered::Future: Send + 'static,

Available on crate feature servers only.
Source§

type Response = <Layered as Service<Request<State>>>::Response

Responses given by the service.
Source§

type Error = <Layered as Service<Request<State>>>::Error

Errors produced by the service.
Source§

type Future = <Layered as Service<Request<State>>>::Future

The future response value.
Source§

fn poll_ready(&mut self, ctx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Request<State>) -> Self::Future

Process the request and return the response asynchronously. Read more
Source§

impl<Layered, State: Clone + Send + Sync + 'static> Service<Request<State>> for LayeredStreamID<Layered>
where Layered: Service<Request<State>, Response = Response, Error = Infallible> + Clone + Send + 'static, Layered::Future: Send + 'static,

Source§

type Response = <Layered as Service<Request<State>>>::Response

Responses given by the service.
Source§

type Error = <Layered as Service<Request<State>>>::Error

Errors produced by the service.
Source§

type Future = Instrumented<<Layered as Service<Request<State>>>::Future>

The future response value.
Source§

fn poll_ready(&mut self, ctx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Request<State>) -> Self::Future

Process the request and return the response asynchronously. Read more
Source§

impl<Layered, State: Clone + Send + Sync + 'static> Service<Request<State>> for LayeredWALMessage<Layered>
where Layered: Service<Request<State>, Response = Response, Error = Infallible> + Clone + Send + 'static, Layered::Future: Send + 'static,

Available on crate feature servers only.
Source§

type Response = <Layered as Service<Request<State>>>::Response

Responses given by the service.
Source§

type Error = <Layered as Service<Request<State>>>::Error

Errors produced by the service.
Source§

type Future = Pin<Box<dyn Future<Output = Result<<LayeredWALMessage<Layered> as Service<Request<State>>>::Response, <LayeredWALMessage<Layered> as Service<Request<State>>>::Error>> + Send>>

The future response value.
Source§

fn poll_ready(&mut self, ctx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Request<State>) -> Self::Future

Process the request and return the response asynchronously. Read more
Source§

impl<State: Clone + Send + Sync + 'static> Service<Request<State>> for Router<State>

Available on crate feature servers only.
Source§

type Response = Response

Responses given by the service.
Source§

type Error = Infallible

Errors produced by the service.
Source§

type Future = Pin<Box<dyn Future<Output = Result<<Router<State> as Service<Request<State>>>::Response, <Router<State> as Service<Request<State>>>::Error>> + Send>>

The future response value.
Source§

fn poll_ready( &mut self, _ctx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
Source§

fn call(&mut self, req: Request<State>) -> Self::Future

Process the request and return the response asynchronously. Read more
Source§

impl<State: Clone + Send + Sync + 'static> Structable for Request<State>

Source§

fn definition(&self) -> StructDef<'_>

Returns the struct’s definition. Read more
Source§

impl<State: Clone + Send + Sync + 'static> Valuable for Request<State>

Source§

fn as_value(&self) -> Value<'_>

Converts self into a Value instance. Read more
Source§

fn visit(&self, visitor: &mut dyn Visit)

Calls the relevant method on Visit to extract data from self. Read more
Source§

fn visit_slice(slice: &[Self], visit: &mut dyn Visit)
where Self: Sized,

Auto Trait Implementations§

§

impl<State> !Freeze for Request<State>

§

impl<State> !RefUnwindSafe for Request<State>

§

impl<State> Send for Request<State>

§

impl<State> Sync for Request<State>

§

impl<State> Unpin for Request<State>
where State: Unpin,

§

impl<State> !UnwindSafe for Request<State>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<InnerTy> FromRef<InnerTy> for InnerTy
where InnerTy: Clone,

Source§

fn from_ref(input: &InnerTy) -> InnerTy

Available on crate features clients or servers only.
Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,