vtcode_core/orchestrator/
scheduler.rs1use std::collections::VecDeque;
2
3use tokio::sync::Mutex;
4
5use super::ScheduledWork;
6
7#[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}