pub struct BandwidthAllocation {
pub total_bandwidth_bps: u64,
/* private fields */
}Expand description
Bandwidth allocation configuration for all QoS classes
Manages per-class bandwidth quotas and tracks real-time usage across all priority levels.
Fields§
§total_bandwidth_bps: u64Total available bandwidth in bits per second
Implementations§
Source§impl BandwidthAllocation
impl BandwidthAllocation
Sourcepub fn new(total_bandwidth_bps: u64) -> BandwidthAllocation
pub fn new(total_bandwidth_bps: u64) -> BandwidthAllocation
Create a new bandwidth allocation with specified total bandwidth
Sourcepub fn default_tactical() -> BandwidthAllocation
pub fn default_tactical() -> BandwidthAllocation
Create default tactical allocation for 1 Mbps link
Designed for constrained tactical radio links with emphasis on critical data delivery.
Sourcepub fn default_standard() -> BandwidthAllocation
pub fn default_standard() -> BandwidthAllocation
Create allocation for 10 Mbps link (standard WiFi/LTE)
Sourcepub fn default_high_bandwidth() -> BandwidthAllocation
pub fn default_high_bandwidth() -> BandwidthAllocation
Create allocation for high-bandwidth link (100 Mbps+)
Sourcepub fn can_transmit(&self, class: QoSClass, size_bytes: usize) -> bool
pub fn can_transmit(&self, class: QoSClass, size_bytes: usize) -> bool
Check if transmission is allowed for a given class and size
Returns true if there is sufficient bandwidth available within the class quota and global limit.
Sourcepub fn acquire(
&self,
class: QoSClass,
size_bytes: usize,
) -> Option<BandwidthPermit>
pub fn acquire( &self, class: QoSClass, size_bytes: usize, ) -> Option<BandwidthPermit>
Acquire a bandwidth permit
Returns a permit if bandwidth is available, None otherwise. The permit must be held while transmitting and will automatically track usage when dropped.
Sourcepub async fn acquire_async(
&self,
class: QoSClass,
size_bytes: usize,
) -> Option<BandwidthPermit>
pub async fn acquire_async( &self, class: QoSClass, size_bytes: usize, ) -> Option<BandwidthPermit>
Acquire a bandwidth permit (async version)
Async-safe version that properly awaits the token bucket lock.
Sourcepub fn preempt_lower(&self, class: QoSClass) -> bool
pub fn preempt_lower(&self, class: QoSClass) -> bool
Attempt to preempt lower priority transfers
Returns true if preemption is allowed and was successful. The caller should pause/cancel lower priority transfers.
Sourcepub fn get_quota(&self, class: QoSClass) -> Option<&Arc<BandwidthQuota>>
pub fn get_quota(&self, class: QoSClass) -> Option<&Arc<BandwidthQuota>>
Get the quota configuration for a class
Sourcepub fn class_utilization(&self, class: QoSClass) -> f64
pub fn class_utilization(&self, class: QoSClass) -> f64
Get current utilization for a class (0.0 - 1.0+)
Sourcepub async fn total_utilization(&self) -> f64
pub async fn total_utilization(&self) -> f64
Get overall bandwidth utilization
Sourcepub async fn available_bandwidth_bps(&self) -> u64
pub async fn available_bandwidth_bps(&self) -> u64
Get available bandwidth in bits per second
Sourcepub fn active_permit_count(&self) -> u64
pub fn active_permit_count(&self) -> u64
Get number of active permits
Sourcepub fn all_utilizations(&self) -> HashMap<QoSClass, f64>
pub fn all_utilizations(&self) -> HashMap<QoSClass, f64>
Get all class utilizations
Trait Implementations§
Auto Trait Implementations§
impl Freeze for BandwidthAllocation
impl !RefUnwindSafe for BandwidthAllocation
impl Send for BandwidthAllocation
impl Sync for BandwidthAllocation
impl Unpin for BandwidthAllocation
impl UnsafeUnpin for BandwidthAllocation
impl !UnwindSafe for BandwidthAllocation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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