Skip to main content

Module sync_queue

Module sync_queue 

Source
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§

PendingSync
A pending synchronization item
PrioritySyncQueue
Priority-ordered sync queue
QueueStats
Queue statistics