pub struct QosReservationController { /* private fields */ }Expand description
Owns bounded QoS reservation generations independently of station calls.
Implementations§
Source§impl QosReservationController
impl QosReservationController
Sourcepub fn new(limits: QosReservationLimits) -> Result<Self, QosReservationError>
pub fn new(limits: QosReservationLimits) -> Result<Self, QosReservationError>
Creates an empty controller after validating every resource bound.
Sourcepub fn start(
&mut self,
request: QosReservationRequest,
now: Instant,
) -> Result<(QosReservationId, QosTransition), QosReservationError>
pub fn start( &mut self, request: QosReservationRequest, now: Instant, ) -> Result<(QosReservationId, QosTransition), QosReservationError>
Reserves a fresh lifetime identity and returns the exact setup message. A flow/direction pair can never be reused by this controller.
Sourcepub fn state(&self, id: QosReservationId) -> Option<QosReservationState>
pub fn state(&self, id: QosReservationId) -> Option<QosReservationState>
Returns None for unknown and already retired generations.
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Counts live generations without discarding retained correlation history.
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Reports whether live state is empty; retired wire identities remain reserved.
Sourcepub fn modify(
&mut self,
id: QosReservationId,
traffic: QosTrafficSpecification,
application: QosApplicationIdentifier,
response_timeout: Duration,
now: Instant,
) -> Result<QosTransition, QosReservationError>
pub fn modify( &mut self, id: QosReservationId, traffic: QosTrafficSpecification, application: QosApplicationIdentifier, response_timeout: Duration, now: Instant, ) -> Result<QosTransition, QosReservationError>
Sends the sole correlatable modification for an active generation.
The message family has no transaction identity or explicit success response, so repeated modifications would make late failures ambiguous.
Sourcepub fn update_dscp(
&self,
id: QosReservationId,
dscp: u8,
) -> Result<QosTransition, QosReservationError>
pub fn update_dscp( &self, id: QosReservationId, dscp: u8, ) -> Result<QosTransition, QosReservationError>
Builds a six-bit DSCP update for an active generation.
Sourcepub fn teardown(
&mut self,
id: QosReservationId,
) -> Result<QosTransition, QosReservationError>
pub fn teardown( &mut self, id: QosReservationId, ) -> Result<QosTransition, QosReservationError>
Retires the generation before returning its teardown message.
Sourcepub fn handle_message(&mut self, message: &ControlMessage) -> QosTransition
pub fn handle_message(&mut self, message: &ControlMessage) -> QosTransition
Handles only service-node reservation notifications and errors. Other typed control messages leave state unchanged.
Sourcepub fn poll(&mut self, now: Instant) -> QosTransition
pub fn poll(&mut self, now: Instant) -> QosTransition
Expires every elapsed setup or modification observation in ID order.
Sourcepub fn drain(&mut self) -> QosTransition
pub fn drain(&mut self) -> QosTransition
Retires all live generations and returns teardowns in ID order.