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, MiniCBORSerialization>where H: TypeRenderable, H::Get: for<'de> Encode<()>, H::Post: for<'de> Decode<'de, ()>, H::Put: for<'de> Decode<'de, ()>,

§

type RequestData = TypeRequestData

source§

fn extract_request_data( &mut self, request: &impl ReadableMessage ) -> Self::RequestData

source§

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

source§

fn build_response( &mut self, response: &mut impl MutableWritableMessage, request: Self::RequestData )

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

source§

fn extract_request_data( &mut self, request: &impl ReadableMessage ) -> Self::RequestData

source§

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

source§

fn build_response( &mut self, response: &mut impl MutableWritableMessage, request: Self::RequestData )

Auto Trait Implementations§

§

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

§

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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<'a, OldRD, OldH> HandlerBuilder<'a, OldRD> for OldHwhere OldH: Handler<RequestData = OldRD>,

source§

fn at<H>(self, path: &'a [&'a str], handler: H) -> ForkingHandler<'a, H, OldH>

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

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

const: unstable · 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<T> for T

§

type Output = T

Should always be Self
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.