Skip to main content

Sessions

Struct Sessions 

Source
pub struct Sessions { /* private fields */ }
Expand description

All sessions

Implementations§

Source§

impl Sessions

Source

pub const fn new() -> Sessions

Create a new Sessions instance.

Source

pub fn init() -> impl Init<Sessions>

Create an in-place initializer for a new Sessions instance.

Source

pub fn reset(&mut self)

Source§

impl Sessions

Source

pub fn get_next_sess_id(&mut self) -> u16

Source

pub fn get_next_exch_id<C>(&mut self, crypto: C) -> Result<u16, Error>
where C: Crypto,

Source

pub fn get_session_for_eviction(&mut self) -> Option<&mut Session>

Source

pub fn add( &mut self, msg_ctr: u32, reserved: bool, peer_addr: Address, peer_nodeid: Option<u64>, dev_det: &BasicInfoConfig<'_>, ) -> Result<&mut Session, Error>

Source

pub fn remove(&mut self, id: u32) -> Option<Session>

This assumes that the higher layer has taken care of doing anything required as per the spec before the session is removed

Source

pub fn remove_for_fabric( &mut self, fabric_idx: NonZero<u8>, expire_sess_id: Option<u32>, )

This assumes that the higher layer has taken care of doing anything required as per the spec before the sessions are removed or expired

Source

pub fn get(&mut self, id: u32) -> Option<&mut Session>

Source

pub fn iter(&self) -> impl Iterator<Item = &Session>

Iterate over the sessions

Source

pub fn remove_pase(&mut self, expire_sess_id: Option<u32>)

Drop every PASE session, whether unpromoted (still SessionMode::Pase { fab_idx: 0 }) or already promoted to a fabric. Used by:

  • RevokeCommissioning and a fail-safe expiry over a PASE session (Matter Core spec): when the commissioning window is torn down, any in-flight PASE sessions associated with it must be terminated. A PASE that was promoted via AddNOC is rolled back by the same fail-safe expiry, so its session must go too.
  • CommissioningComplete (Matter Core spec): once the device transitions to operational state, all PASE sessions SHALL be terminated. Without this each commissioning round leaks the promoted PASE it ran on, and the session table eventually exhausts — visible as BUSY on the next round’s PBKDFParamRequest.

expire_sess_id is the optional ID of a session that should NOT be removed immediately — typically the session that issued the triggering command, so its response can still be sent. That session is marked as expired instead, so it stops accepting new exchanges but the in-flight one can complete; the transport reclaims the slot via the usual LRU eviction path.

Trait Implementations§

Source§

impl Default for Sessions

Source§

fn default() -> Sessions

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

impl Display for Sessions

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.
Source§

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

Source§

fn vzip(self) -> V