Skip to main content

SubscribeReqBuilder

Struct SubscribeReqBuilder 

Source
pub struct SubscribeReqBuilder<P, const F: usize = 0> { /* private fields */ }
Expand description

Streaming builder for a SubscribeRequestMessage. Type-state-tagged so the compiler enforces in-order field writes; optional fields are implicitly skipped by not calling their setter.

Field-state values (state after each named field has been written or implicitly skipped):

  • 0: nothing written yet
  • 1: past KeepSubs
  • 2: past MinIntFloor
  • 3: past MaxIntCeil
  • 4: past AttributeRequests
  • 5: past EventRequests
  • 6: past EventFilters
  • 7: past FabricFiltered (mandatory; no implicit-skip from states 3-6 to end() — caller must invoke fabric_filtered)
  • 8: past DataVersionFilters
  • 9: past InteractionModelRevision (auto-injected at default value IM_REVISION by end() if the optional setter wasn’t called)

Implementations§

Source§

impl<P> SubscribeReqBuilder<P>

Source

pub fn new(p: P, tag: &TLVTag) -> Result<SubscribeReqBuilder<P>, Error>

Begin a new SubscribeRequestMessage — opens a struct at the given tag on the parent’s writer. For top-level use (the usual case) pass &TLVTag::Anonymous.

Source§

impl<P> SubscribeReqBuilder<P>

Source

pub fn keep_subs(self, value: bool) -> Result<SubscribeReqBuilder<P, 1>, Error>

Write the mandatory KeepSubs field. true (the typical value) instructs the peer to keep any existing subscriptions for this fabric+peer pair alongside the new one; false terminates them before establishing this subscription.

Source§

impl<P> SubscribeReqBuilder<P, 1>

Source

pub fn min_int_floor( self, value: u16, ) -> Result<SubscribeReqBuilder<P, 2>, Error>

Write the mandatory MinIntervalFloor field (seconds). The minimum reporting interval the peer is allowed to use; the server may pick any interval at or above this floor.

Source§

impl<P> SubscribeReqBuilder<P, 2>

Source

pub fn max_int_ceil( self, value: u16, ) -> Result<SubscribeReqBuilder<P, 3>, Error>

Write the mandatory MaxIntervalCeiling field (seconds). The peer MUST report no less frequently than this even if nothing has changed (heartbeat). The server may pick any interval at or below this ceiling — see Matter Core spec.

Source§

impl<P> SubscribeReqBuilder<P, 3>

Source

pub fn attr_requests( self, ) -> Result<AttrPathArrayBuilder<SubscribeReqBuilder<P, 4>>, Error>

Open the optional AttributeRequests array. Each .push() yields an [AttrPathBuilder]; close with .end() to advance to the next message field.

Source

pub fn attr_requests_from( self, paths: &[AttrPath], ) -> Result<SubscribeReqBuilder<P, 4>, Error>

Write AttributeRequests from a pre-built slice. Convenience for callers that already have an &[AttrPath] on hand.

Source§

impl<P> SubscribeReqBuilder<P, 3>

Source

pub fn event_requests_from( self, paths: &[EventPath], ) -> Result<SubscribeReqBuilder<P, 5>, Error>

Write EventRequests from a pre-built slice, implicitly skipping AttributeRequests.

Source§

impl<P> SubscribeReqBuilder<P, 4>

Source

pub fn event_requests_from( self, paths: &[EventPath], ) -> Result<SubscribeReqBuilder<P, 5>, Error>

Write EventRequests from a pre-built slice.

Source§

impl<P> SubscribeReqBuilder<P, 3>

Source

pub fn event_filters_from( self, filters: &[EventFilter], ) -> Result<SubscribeReqBuilder<P, 6>, Error>

Source§

impl<P> SubscribeReqBuilder<P, 4>

Source

pub fn event_filters_from( self, filters: &[EventFilter], ) -> Result<SubscribeReqBuilder<P, 6>, Error>

Source§

impl<P> SubscribeReqBuilder<P, 5>

Source

pub fn event_filters_from( self, filters: &[EventFilter], ) -> Result<SubscribeReqBuilder<P, 6>, Error>

Write EventFilters from a pre-built slice.

Source§

impl<P> SubscribeReqBuilder<P, 3>

Source

pub fn fabric_filtered( self, value: bool, ) -> Result<SubscribeReqBuilder<P, 7>, Error>

Write the mandatory FabricFiltered field, implicitly skipping AttributeRequests, EventRequests, and EventFilters.

Source§

impl<P> SubscribeReqBuilder<P, 4>

Source

pub fn fabric_filtered( self, value: bool, ) -> Result<SubscribeReqBuilder<P, 7>, Error>

Source§

impl<P> SubscribeReqBuilder<P, 5>

Source

pub fn fabric_filtered( self, value: bool, ) -> Result<SubscribeReqBuilder<P, 7>, Error>

Source§

impl<P> SubscribeReqBuilder<P, 6>

Source

pub fn fabric_filtered( self, value: bool, ) -> Result<SubscribeReqBuilder<P, 7>, Error>

Write the mandatory FabricFiltered field. true (the typical value) constrains the subscription to attribute / event reports for the accessing fabric only.

Source§

impl<P> SubscribeReqBuilder<P, 7>

Source

pub fn dataver_filters_from( self, filters: &[DataVersionFilter], ) -> Result<SubscribeReqBuilder<P, 8>, Error>

Write DataVersionFilters from a pre-built slice. Used by caching clients to skip attributes whose data version hasn’t advanced since the last cached read.

Source§

impl<P> SubscribeReqBuilder<P, 7>

Source

pub fn end(self) -> Result<P, Error>

Close the message struct, implicitly skipping DataVersionFilters. Returns the parent.

Source§

impl<P> SubscribeReqBuilder<P, 7>

Source

pub fn interaction_model_revision( self, value: u8, ) -> Result<SubscribeReqBuilder<P, 9>, Error>

Write InteractionModelRevision, implicitly skipping DataVersionFilters. This is a typestate skip-shim mirroring the pattern PR #447 established for SuppressResponse / TimedRequest on InvReqBuilder: callers who don’t populate the optional preceding field can advance straight to setting (or auto-injecting) InteractionModelRevision without an explicit no-op transition.

Source§

impl<P> SubscribeReqBuilder<P, 8>

Source

pub fn interaction_model_revision( self, value: u8, ) -> Result<SubscribeReqBuilder<P, 9>, Error>

Write the mandatory-on-the-wire InteractionModelRevision field (Matter Core: value is 13 since Matter 1.3, unchanged in 1.4 and 1.5). Optional at the API level — omit and end() injects IM_REVISION automatically.

Source

pub fn end(self) -> Result<P, Error>

Close the message struct, auto-injecting InteractionModelRevision at its default value IM_REVISION. Returns the parent.

Source§

impl<P> SubscribeReqBuilder<P, 9>

Source

pub fn end(self) -> Result<P, Error>

Close the message struct and return the parent.

Trait Implementations§

Source§

impl<P, const F: usize> Debug for SubscribeReqBuilder<P, F>
where P: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<P> TLVBuilder<P> for SubscribeReqBuilder<P>

Source§

fn new(parent: P, tag: &TLVTag) -> Result<SubscribeReqBuilder<P>, Error>

Create a new TLV builder for the given parent and tag.
Source§

fn unchecked_into_parent(self) -> P

Convert itself into a writer. Read more
Source§

fn with<F>(self, f: F) -> Result<P, Error>
where F: FnOnce(Self) -> Result<P, Error>,

Call a closure with the builder and return the result.
Source§

impl<P, const F: usize> TLVBuilderParent for SubscribeReqBuilder<P, F>

Source§

type Write = <P as TLVBuilderParent>::Write

The type of the writer.
Source§

fn writer( &mut self, ) -> &mut <SubscribeReqBuilder<P, F> as TLVBuilderParent>::Write

Return a mutable reference to the writer.

Auto Trait Implementations§

§

impl<P, const F: usize> Freeze for SubscribeReqBuilder<P, F>
where P: Freeze,

§

impl<P, const F: usize> RefUnwindSafe for SubscribeReqBuilder<P, F>
where P: RefUnwindSafe,

§

impl<P, const F: usize> Send for SubscribeReqBuilder<P, F>
where P: Send,

§

impl<P, const F: usize> Sync for SubscribeReqBuilder<P, F>
where P: Sync,

§

impl<P, const F: usize> Unpin for SubscribeReqBuilder<P, F>
where P: Unpin,

§

impl<P, const F: usize> UnsafeUnpin for SubscribeReqBuilder<P, F>
where P: UnsafeUnpin,

§

impl<P, const F: usize> UnwindSafe for SubscribeReqBuilder<P, F>
where P: UnwindSafe,

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