coap_handler_implementations

Struct TypeHandler

Source
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

Wrap a handler that uses serde::Serialize / serde::Deserialize through serde_cbor

Source§

impl<H> TypeHandler<H, MiniCBORSerialization0_19>
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

Wrap a handler through minicbor 0.19

Source§

impl<H> TypeHandler<H, MiniCBORSerialization0_24>
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_0_24(handler: H) -> Self

Wrap a handler through minicbor 0.24

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

Source§

type RequestData = TypeRequestData

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

type ExtractRequestError = Error

Source§

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

Source§

type RequestData = TypeRequestData

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

type ExtractRequestError = Error

Source§

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

Source§

type RequestData = TypeRequestData

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

type ExtractRequestError = Error

Source§

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> Freeze for TypeHandler<H, S>
where H: Freeze,

§

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

Source§

type Output = T

Should always be Self
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.

Layout§

Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.