riot_wrappers::gcoap

Struct SingleHandlerListener

Source
pub struct SingleHandlerListener<'a, H> {
    _phantom: PhantomData<&'a H>,
    resource: coap_resource_t,
    listener: gcoap_listener_t,
}
Available on riot_module_gcoap only.
Expand description

A combination of the coap_resource_t and gcoap_listener_t structs with only a single resource (Compared to many resources, this allows easier creation in Rust at the expense of larger memory consumption and slower lookups in Gcoap).

A listener l can be hooked into the global Gcoap registry using scope(|x| { x.register(l) }).

Fields§

§_phantom: PhantomData<&'a H>§resource: coap_resource_t§listener: gcoap_listener_t

Implementations§

Source§

impl<'a, H> SingleHandlerListener<'a, H>
where H: 'a + Handler,

Source

pub fn new(path: &'a CStr, methods: u32, handler: &'a mut H) -> Self

Source

fn _new( path: &'a CStr, methods: u32, handler: &'a mut H, encoder: Option<unsafe extern "C" fn(_: *const coap_resource_t, _: *mut c_char, _: size_t, _: *mut coap_link_encoder_ctx_t) -> ssize_t>, ) -> Self

Source

pub fn new_catch_all(handler: &'a mut H) -> Self

Create a listener whose single resource catches all requests and processes them through the handler.

This is equivalent to a new single listener at “/” that takes all methods and matches on subtrees.

Note that the taken Handler is a Gcoap Handler (which is there really only in case anyone wants extremely fine-grained control of what gcoap does); if you have a coap_handler_0_2::Handler, you can wrap it in crate::coap_handler::v0_2::GcoapHandler to for adaptation.

Source

unsafe extern "C" fn call_handler( pkt: *mut coap_pkt_t, buf: *mut u8, len: size_t, context: *mut coap_request_ctx_t, ) -> ssize_t

Source§

impl<'a, H> SingleHandlerListener<'a, H>
where H: 'a + Handler + WithLinkEncoder,

Like Self::new(), but utilizing that the handler is also WithLinkEncoder and can thus influence what is reported when the default .well-known/core handler is queried.

Trait Implementations§

Source§

impl<'a, H> ListenerProvider for SingleHandlerListener<'a, H>
where H: 'a + Handler,

Source§

unsafe fn get_listener(&mut self) -> &mut gcoap_listener_t

Provide an exclusive reference to the underlying gcoap listener. The function is marked unsafe as the returned value contains raw pointers that will later be dereferenced, and returning arbitrary pointers would make RegistratinScope::register() pass bad data on to C.

Auto Trait Implementations§

§

impl<'a, H> Freeze for SingleHandlerListener<'a, H>

§

impl<'a, H> RefUnwindSafe for SingleHandlerListener<'a, H>
where H: RefUnwindSafe,

§

impl<'a, H> !Send for SingleHandlerListener<'a, H>

§

impl<'a, H> !Sync for SingleHandlerListener<'a, H>

§

impl<'a, H> Unpin for SingleHandlerListener<'a, H>

§

impl<'a, H> UnwindSafe for SingleHandlerListener<'a, H>
where H: RefUnwindSafe,

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<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> IntoSwitch for T

Source§

fn into_switch<ActiveLevel>(self) -> Switch<T, ActiveLevel>

Consumes the IoPin returning a Switch of the appropriate ActiveLevel. Read more
Source§

fn into_active_low_switch(self) -> Switch<Self, ActiveLow>
where Self: Sized,

Consumes the IoPin returning a Switch<IoPin, ActiveLow>. Read more
Source§

fn into_active_high_switch(self) -> Switch<Self, ActiveHigh>
where Self: Sized,

Consumes the IoPin returning a Switch<IoPin, ActiveHigh>. Read more
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: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 40 bytes