Skip to main content

vtcode_core/orchestrator/
scheduler.rs

1use std::collections::VecDeque;
2
3use tokio::sync::Mutex;
4
5use super::ScheduledWork;
6
7/// Simple queue-backed scheduler with FIFO ordering.
8#[derive(Debug, Default)]
9pub struct Scheduler {
10    queue: Mutex<VecDeque<ScheduledWork>>,
11}
12
13impl Scheduler {
14    pub fn new() -> Self {
15        Self {
16            queue: Mutex::new(VecDeque::new()),
17        }
18    }
19
20    pub async fn enqueue(&self, work: ScheduledWork) {
21        let mut queue = self.queue.lock().await;
22        queue.push_back(work);
23    }
24
25    pub async fn next(&self) -> Option<ScheduledWork> {
26        let mut queue = self.queue.lock().await;
27        queue.pop_front()
28    }
29
30    pub async fn queue_depth(&self) -> usize {
31        let queue = self.queue.lock().await;
32        queue.len()
33    }
34}