Expand description
Priority-based sync queue (ADR-019 Phase 3)
This module provides a priority-ordered queue for pending synchronization operations. Data is dequeued in priority order (P1 Critical first) with support for priority aging to prevent starvation.
§Architecture
The queue maintains separate internal queues for each QoS class:
- P1 Critical: Emergency alerts, contact reports
- P2 High: Target imagery, mission retasking
- P3 Normal: Health status, capability changes
- P4 Low: Position updates, heartbeats
- P5 Bulk: Model updates, debug logs
§Priority Aging
To prevent starvation of low-priority data, items are promoted after extended wait times:
- P5 → P4 after 1 hour
- P4 → P3 after 2 hours
§Example
use peat_protocol::qos::{QoSClass, DataType, PrioritySyncQueue, PendingSync};
use std::time::Instant;
let mut queue = PrioritySyncQueue::new(10 * 1024 * 1024); // 10 MB max
// Enqueue some data
let sync = PendingSync {
data: vec![1, 2, 3],
qos_class: QoSClass::Critical,
data_type: DataType::ContactReport,
queued_at: Instant::now(),
priority_multiplier: 1.0,
};
queue.enqueue(sync).unwrap();
// Dequeue highest priority
if let Some(item) = queue.dequeue_highest() {
assert_eq!(item.qos_class, QoSClass::Critical);
}Structs§
- Pending
Sync - A pending synchronization item
- Priority
Sync Queue - Priority-ordered sync queue
- Queue
Stats - Queue statistics