[][src]Trait coap_handler::Handler

pub trait Handler {
    type RequestData;
    fn extract_request_data<'a>(
        &mut self,
        request: &'a impl ReadableMessage<'a>
    ) -> Self::RequestData;
fn estimate_length(&mut self, request: &Self::RequestData) -> usize;
fn build_response(
        &mut self,
        response: &mut impl MutableWritableMessage,
        request: Self::RequestData
    ); }

A CoAP request handler. This gets called by a CoAP server implementation that the handler is assigned to; the server has the handler digest the request's data into a RequestData structure, possibly calls estimate_length before allocating a response message, and then asks the handler to populate the allocated response message with data persisted in the RequestData structure.

Associated Types

Loading content...

Required methods

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

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

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

Loading content...

Implementations on Foreign Types

impl<H> Handler for Option<H> where
    H: Handler
[src]

An easy way to have resources that may or may not be there in a tree, considering that Handler is not object safe and thus, if let Some(x) { all = all.at(...) won't work.

This returns 4.04 Not Found if the inner handler is absent, and otherwise forwards request and response building.

type RequestData = Option<H::RequestData>

Loading content...

Implementors

impl Handler for NeverFound[src]

type RequestData = ()

impl Handler for TypedStaticResponse[src]

type RequestData = u8

impl<'a, RD1, H1, RD2, H2> Handler for ForkingHandler<'a, H1, H2> where
    H1: Handler<RequestData = RD1>,
    H2: Handler<RequestData = RD2>, 
[src]

type RequestData = ForkingRequestData<RD1, RD2>

impl<H> Handler for SimpleCBORWrapper<H> where
    H: SimpleCBORHandler,
    H::Get: Serialize,
    H::Post: for<'de> Deserialize<'de>,
    H::Put: for<'de> Deserialize<'de>, 
[src]

type RequestData = SimpleCBORRequestData

impl<T> Handler for T where
    T: SimpleRenderable
[src]

type RequestData = SimpleRenderableData

Loading content...