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>,
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>,
Sourcepub fn new(handler: H) -> Self
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>
impl<H> TypeHandler<H, MiniCBORSerialization0_19>
Sourcepub fn new_minicbor(handler: H) -> Self
pub fn new_minicbor(handler: H) -> Self
Wrap a handler through minicbor 0.19
Source§impl<H> TypeHandler<H, MiniCBORSerialization0_24>
impl<H> TypeHandler<H, MiniCBORSerialization0_24>
Sourcepub fn new_minicbor_0_24(handler: H) -> Self
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>,
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 ExtractRequestError = Error
type ExtractRequestError = Error
extract_request_data()
. Read moreSource§type BuildResponseError<M: MinimalWritableMessage> = <M as MinimalWritableMessage>::UnionError
type BuildResponseError<M: MinimalWritableMessage> = <M as MinimalWritableMessage>::UnionError
Source§fn extract_request_data<M: ReadableMessage>(
&mut self,
request: &M,
) -> Result<Self::RequestData, Error>
fn extract_request_data<M: ReadableMessage>( &mut self, request: &M, ) -> Result<Self::RequestData, Error>
Source§fn estimate_length(&mut self, request: &Self::RequestData) -> usize
fn estimate_length(&mut self, request: &Self::RequestData) -> usize
Source§fn build_response<M: MutableWritableMessage>(
&mut self,
response: &mut M,
request: Self::RequestData,
) -> Result<(), Self::BuildResponseError<M>>
fn build_response<M: MutableWritableMessage>( &mut self, response: &mut M, request: Self::RequestData, ) -> Result<(), Self::BuildResponseError<M>>
Source§impl<H> Handler for TypeHandler<H, MiniCBORSerialization0_19>
impl<H> Handler for TypeHandler<H, MiniCBORSerialization0_19>
Source§type ExtractRequestError = Error
type ExtractRequestError = Error
extract_request_data()
. Read moreSource§type BuildResponseError<M: MinimalWritableMessage> = <M as MinimalWritableMessage>::UnionError
type BuildResponseError<M: MinimalWritableMessage> = <M as MinimalWritableMessage>::UnionError
Source§fn extract_request_data<M: ReadableMessage>(
&mut self,
request: &M,
) -> Result<Self::RequestData, Error>
fn extract_request_data<M: ReadableMessage>( &mut self, request: &M, ) -> Result<Self::RequestData, Error>
Source§fn estimate_length(&mut self, request: &Self::RequestData) -> usize
fn estimate_length(&mut self, request: &Self::RequestData) -> usize
Source§fn build_response<M: MutableWritableMessage>(
&mut self,
response: &mut M,
request: Self::RequestData,
) -> Result<(), Self::BuildResponseError<M>>
fn build_response<M: MutableWritableMessage>( &mut self, response: &mut M, request: Self::RequestData, ) -> Result<(), Self::BuildResponseError<M>>
Source§impl<H> Handler for TypeHandler<H, MiniCBORSerialization0_24>
impl<H> Handler for TypeHandler<H, MiniCBORSerialization0_24>
Source§type ExtractRequestError = Error
type ExtractRequestError = Error
extract_request_data()
. Read moreSource§type BuildResponseError<M: MinimalWritableMessage> = <M as MinimalWritableMessage>::UnionError
type BuildResponseError<M: MinimalWritableMessage> = <M as MinimalWritableMessage>::UnionError
Source§fn extract_request_data<M: ReadableMessage>(
&mut self,
request: &M,
) -> Result<Self::RequestData, Error>
fn extract_request_data<M: ReadableMessage>( &mut self, request: &M, ) -> Result<Self::RequestData, Error>
Source§fn estimate_length(&mut self, request: &Self::RequestData) -> usize
fn estimate_length(&mut self, request: &Self::RequestData) -> usize
Source§fn build_response<M: MutableWritableMessage>(
&mut self,
response: &mut M,
request: Self::RequestData,
) -> Result<(), Self::BuildResponseError<M>>
fn build_response<M: MutableWritableMessage>( &mut self, response: &mut M, request: Self::RequestData, ) -> Result<(), Self::BuildResponseError<M>>
Auto Trait Implementations§
impl<H, S> Freeze for TypeHandler<H, S>where
H: Freeze,
impl<H, S> RefUnwindSafe for TypeHandler<H, S>where
H: RefUnwindSafe,
S: RefUnwindSafe,
impl<H, S> Send for TypeHandler<H, S>
impl<H, S> Sync for TypeHandler<H, S>
impl<H, S> Unpin for TypeHandler<H, S>
impl<H, S> UnwindSafe for TypeHandler<H, S>where
H: UnwindSafe,
S: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<'a, OldRD, OldH> HandlerBuilder<'a, OldRD> for OldHwhere
OldH: Handler<RequestData = OldRD>,
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, Self>
fn at<H>(self, path: &'a [&'a str], handler: H) -> ForkingHandler<'a, H, Self>
Source§fn at_with_attributes<H>(
self,
path: &'a [&'a str],
attributes: &'a [Attribute],
handler: H,
) -> ForkingHandler<'a, ConstantSingleRecordReport<'a, H>, Self>
fn at_with_attributes<H>( self, path: &'a [&'a str], attributes: &'a [Attribute], handler: H, ) -> ForkingHandler<'a, ConstantSingleRecordReport<'a, H>, Self>
path
into the given handler
, and announce them with the
given attributes in .well-known/core. Read moreLayout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.