Skip to main content

vv_agent/runtime/sub_task_manager/
identity.rs

1use std::sync::atomic::{AtomicU64, Ordering};
2
3use super::manager::SubTaskManager;
4
5static SUB_TASK_COUNTER: AtomicU64 = AtomicU64::new(1);
6
7impl SubTaskManager {
8    pub fn next_task_identity(parent_task_id: &str, agent_name: &str) -> (String, String) {
9        let parent = parent_task_id.trim();
10        let parent = if parent.is_empty() { "task" } else { parent };
11        let suffix = SUB_TASK_COUNTER.fetch_add(1, Ordering::Relaxed);
12        let task_id = format!("{parent}_sub_{agent_name}_{suffix:08x}");
13        (task_id.clone(), task_id)
14    }
15}