pub struct TypeHandler<H, S: TypeSerializer = SerdeCBORSerialization>
where H: TypeRenderable,
{ /* private fields */ }
Expand description

Wrapper for resource handlers that are implemented in terms of GETting, POSTing or PUTting objects in CBOR format.

The wrapper handles all encoding and decoding, options processing (ignoring the critical Uri-Path option under the assumption that that has been already processed by an underlying request router), the corresponding errors and block-wise GETs.

More complex handlers (eg. implementing additional representations, or processing query aprameters into additional data available to the TypeRenderable) can be built by forwarding to this (where any critical but already processed options would need to be masked from the message’s option) or taking inspiration from it.

Implementations§

source§

impl<H> TypeHandler<H, SerdeCBORSerialization>
where H: TypeRenderable, H::Get: for<'de> Serialize, H::Post: for<'de> Deserialize<'de>, H::Put: for<'de> Deserialize<'de>,

source

pub fn new(handler: H) -> Self

source§

impl<H> TypeHandler<H, MiniCBORSerialization>
where H: TypeRenderable, H::Get: for<'de> Encode<()>, H::Post: for<'de> Decode<'de, ()>, H::Put: for<'de> Decode<'de, ()>,

source

pub fn new_minicbor(handler: H) -> Self

Trait Implementations§

source§

impl<H> Handler for TypeHandler<H, SerdeCBORSerialization>
where H: TypeRenderable, H::Get: for<'de> Serialize, H::Post: for<'de> Deserialize<'de>, H::Put: for<'de> Deserialize<'de>,

§

type RequestData = TypeRequestData

Type constructed in extract_request_data() passed on to build_response(). Read more
§

type ExtractRequestError = Error

§

type BuildResponseError<M: MinimalWritableMessage> = <M as MinimalWritableMessage>::UnionError

source§

fn extract_request_data<M: ReadableMessage>( &mut self, request: &M ) -> Result<Self::RequestData, Error>

Process an incoming request. Read more
source§

fn estimate_length(&mut self, request: &Self::RequestData) -> usize

Estimate an upper bound for the number of bytes in the response Read more
source§

fn build_response<M: MutableWritableMessage>( &mut self, response: &mut M, request: Self::RequestData ) -> Result<(), Self::BuildResponseError<M>>

Build a response for the request Read more
source§

impl<H> Handler for TypeHandler<H, MiniCBORSerialization>
where H: TypeRenderable, H::Get: for<'de> Encode<()>, H::Post: for<'de> Decode<'de, ()>, H::Put: for<'de> Decode<'de, ()>,

§

type RequestData = TypeRequestData

Type constructed in extract_request_data() passed on to build_response(). Read more
§

type ExtractRequestError = Error

§

type BuildResponseError<M: MinimalWritableMessage> = <M as MinimalWritableMessage>::UnionError

source§

fn extract_request_data<M: ReadableMessage>( &mut self, request: &M ) -> Result<Self::RequestData, Error>

Process an incoming request. Read more
source§

fn estimate_length(&mut self, request: &Self::RequestData) -> usize

Estimate an upper bound for the number of bytes in the response Read more
source§

fn build_response<M: MutableWritableMessage>( &mut self, response: &mut M, request: Self::RequestData ) -> Result<(), Self::BuildResponseError<M>>

Build a response for the request Read more

Auto Trait Implementations§

§

impl<H, S> RefUnwindSafe for TypeHandler<H, S>

§

impl<H, S> Send for TypeHandler<H, S>
where H: Send, S: Send,

§

impl<H, S> Sync for TypeHandler<H, S>
where H: Sync, S: Sync,

§

impl<H, S> Unpin for TypeHandler<H, S>
where H: Unpin, S: Unpin,

§

impl<H, S> UnwindSafe for TypeHandler<H, S>
where H: UnwindSafe, S: UnwindSafe,

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<'a, OldRD, OldH> HandlerBuilder<'a, OldRD> for OldH
where OldH: Handler<RequestData = OldRD>,

source§

fn at<H>(self, path: &'a [&'a str], handler: H) -> ForkingHandler<'a, H, Self>
where H: Handler + Sized,

Divert requests arriving at path into the given handler. Read more
source§

fn at_with_attributes<H>( self, path: &'a [&'a str], attributes: &'a [Attribute], handler: H ) -> ForkingHandler<'a, ConstantSingleRecordReport<'a, H>, Self>
where H: Handler + Sized,

Divert requests arriving at path into the given handler, and announce them with the given attributes in .well-known/core. Read more
source§

fn below<H>( self, path: &'a [&'a str], handler: H ) -> ForkingTreeHandler<'a, H, Self>

Divert requests arriving with an Uri-Path starting with path to the given handler. 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<T> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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.