Crate coap_handler_implementations

Crate coap_handler_implementations 

Source
Expand description

The coap-handler-implementations crate provides a few convenience, example or reference implementations of the coap-handler interface.

They range from the generic “4.04 Not Found” responder up to a handler that creates a write formatter for GET-only resources, and even provides block-wise transfer that. The TypeHandler enables the easy creation of resource implementations with GET, PUT and POST support in CBOR format. The HandlerBuilder implements crude static path based routing that may suffice for some applications, and is also useful to get started quickly.

§History

This code used to be part of coap-handler, but while the interface needs to stabilize fast (as incompatible changes there propagate to implementations), the implementations still need to develop fast (but it doesn’t hurt too much if one code part is using the old SimpleRenderable while another uses a newer NeverFound).

Version 0.1 is what was available in coap-handler (if Cargo allowed cyclic dependencies, coap-handler would pub use this crate); users are encouraged to just use coap-handler-implementations directly.

§Options Hiding

A common mechanism in handlers is that handlers “consume” options. For example, the ForkingHandler built through HandlerBuilder::at “eats” the Uri-Path; likewise, an Accept-based dispatcher would consume the Accept option.

This allows the handlers themselves to check for any left-over critical options and fail if they can’t handle them – without the need to mask them out there assuming (without an actual check) that prior wrappers took care of them.

§Feature flags

  • leaky_names — Make a few items pub available that do not have stability guarantees. While this is useful in the context of building handlers into statics, apply the same caution as with any other crate feature that’s disabling stability guarantees: Don’t use this from libraries, for your dependents will run the risk of accidentally using unstable names.

Modules§

helpers
wkc
Tools to implement a .well-known/core resource easily

Structs§

Empty
A type that (for minicbor typed handlers) represents an empty payload.
ForkingHandler
ForkingTreeHandler
NeverFound
A resource that unconditionally responds 4.04 Not Found.
SimpleRenderableData
Information a SimpleRenderable needs to carry from request to response.
SimpleRendered
A container that turns any SimpleRenderable (including &str) into a CoAP resource Handler.
TypeHandler
Wrapper for resource handlers that are implemented in terms of GETting, POSTing or PUTting objects in CBOR format.
TypeRequestData
Data carried around between a request and its response for TypeHandlers
TypedStaticRenderable
WellKnownCoreleaky_names
Wrapper around a reporting handler that makes all reported resources discoverable at the path /.well-known/core.

Enums§

ForkingRequestData
Tagged-union container for ForkingHandler

Traits§

DeleteRenderable
Subset of TypeRenderable that handles the DELETE method.
FetchRenderable
Subset of TypeRenderable that handles the FETCH method.
GetRenderable
Subset of TypeRenderable that handles the GET method.
HandlerBuilder
Trait implemented by default on all handlers that lets the user stack them using a builder-like syntax.
IPatchRenderable
Subset of TypeRenderable that handles the IPATCH method.
PostRenderable
Subset of TypeRenderable that handles the POST method.
PutRenderable
Subset of TypeRenderable that handles the PUT method.
ReportingHandlerBuilder
Extension trait for handlers that also implement Reporting.
SimpleRenderable
A simplified Handler trait that can react to GET requests and will render to a fmt::Write object with blockwise backing.
TypeRenderable
A Handler trait that supports various CoAP methods on a data structure that can be serialized, eg. in CBOR.

Functions§

new_dispatcher
with_delete
with_delete_fetch
with_delete_fetch_ipatch
with_delete_ipatch
with_fetch
with_fetch_ipatch
with_get
with_get_delete
with_get_delete_fetch
with_get_delete_fetch_ipatch
with_get_delete_ipatch
with_get_fetch
with_get_fetch_ipatch
with_get_ipatch
with_get_post
with_get_post_delete
with_get_post_delete_fetch
with_get_post_delete_fetch_ipatch
with_get_post_delete_ipatch
with_get_post_fetch
with_get_post_fetch_ipatch
with_get_post_ipatch
with_get_post_put
with_get_post_put_delete
with_get_post_put_delete_fetch
with_get_post_put_delete_ipatch
with_get_post_put_fetch
with_get_post_put_fetch_ipatch
with_get_post_put_ipatch
with_get_put
with_get_put_delete
with_get_put_delete_fetch
with_get_put_delete_fetch_ipatch
with_get_put_delete_ipatch
with_get_put_fetch
with_get_put_fetch_ipatch
with_get_put_ipatch
with_ipatch
with_post
with_post_delete
with_post_delete_fetch
with_post_delete_fetch_ipatch
with_post_delete_ipatch
with_post_fetch
with_post_fetch_ipatch
with_post_ipatch
with_post_put
with_post_put_delete
with_post_put_delete_fetch
with_post_put_delete_fetch_ipatch
with_post_put_delete_ipatch
with_post_put_fetch
with_post_put_fetch_ipatch
with_post_put_ipatch
with_put
with_put_delete
with_put_delete_fetch
with_put_delete_fetch_ipatch
with_put_delete_ipatch
with_put_fetch
with_put_fetch_ipatch
with_put_ipatch