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) -> Self
pub fn new(total_bandwidth_bps: u64) -> Self
Create a new bandwidth allocation with specified total bandwidth
Sourcepub fn default_tactical() -> Self
pub fn default_tactical() -> Self
Create default tactical allocation for 1 Mbps link
Designed for constrained tactical radio links with emphasis on critical data delivery.
Sourcepub fn default_standard() -> Self
pub fn default_standard() -> Self
Create allocation for 10 Mbps link (standard WiFi/LTE)
Sourcepub fn default_high_bandwidth() -> Self
pub fn default_high_bandwidth() -> Self
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