Skip to main content

Events

Struct Events 

Source
pub struct Events<const N: usize = rs_matter::::im::events::Events::{constant#0}> { /* private fields */ }
Expand description

Events queue.

It lets one publish Matter Events into a priority queue, and allows subscribers and remote clients to read the published events.

The queue is implemented as three equally sized ring buffers, the size of the buffers is set by N. Hence the memory use of the buffers will be 3 * N. If a very small N is picked, then clients that poll may miss events as they fall out of the queue; but a large N of course uses more memory.

If the app emits no events, this subsystem can be disabled by using the NoEvents type alias.

Implementations§

Source§

impl<const N: usize> Events<N>

Source

pub const fn new() -> Events<N>

Source

pub fn init() -> impl Init<Events<N>>

Source

pub fn reset(&mut self)

Source

pub fn push<S, F>( &self, endpoint_id: u16, cluster_id: u32, event_id: u32, priority: EventPriority, kv: S, f: F, ) -> Result<u64, Error>

Push a new event into the event queue.

§Arguments
  • endpoint_id: The endpoint ID of the event source.
  • cluster_id: The cluster ID of the event source.
  • event_id: The event ID of the event source.
  • priority: The priority of the event.
  • kv: A key-value store access object for persisting event state as needed.
  • f: A closure that takes an EventTLVWrite and writes the event data into it using TLV encoding. The closure should return an error if writing the event data fails for any reason, in which case the event will not be pushed into the queue.
§Returns
  • Ok(EventNumber): The sequence number of the emitted event, if the event was successfully emitted.
  • Err(Error): An error if the event could not be emitted.

Trait Implementations§

Source§

impl<const N: usize> Default for Events<N>

Source§

fn default() -> Events<N>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<const N: usize = rs_matter::::im::events::Events::{constant#0}> !Freeze for Events<N>

§

impl<const N: usize = rs_matter::::im::events::Events::{constant#0}> !RefUnwindSafe for Events<N>

§

impl<const N: usize = rs_matter::::im::events::Events::{constant#0}> !Sync for Events<N>

§

impl<const N: usize> Send for Events<N>

§

impl<const N: usize> Unpin for Events<N>

§

impl<const N: usize> UnsafeUnpin for Events<N>

§

impl<const N: usize> UnwindSafe for Events<N>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, E> Init<T, E> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, I> IntoFallibleInit<T> for I
where I: Init<T>,

Source§

fn into_fallible<E>(self) -> impl Init<T, E>

Convert the infallible initializer to a fallible one.
Source§

impl<Source, Target> OctetsInto<Target> for Source
where Target: OctetsFrom<Source>,

Source§

type Error = <Target as OctetsFrom<Source>>::Error

Source§

fn try_octets_into( self, ) -> Result<Target, <Source as OctetsInto<Target>>::Error>

Performs the conversion.
Source§

fn octets_into(self) -> Target
where Self::Error: Into<Infallible>,

Performs an infallible conversion.
Source§

impl<T, E> PinInit<T, E> for T

Source§

unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V