use rain_core::{types::*, utils::*};
use std::collections::HashMap;
use super::{DataObjectRef, ExecutorRef, TaskRef};
use governor::tasks::TaskInstance;
pub struct Graph {
pub ready_tasks: Vec<TaskRef>,
pub running_tasks: HashMap<TaskId, TaskInstance>,
pub tasks: HashMap<TaskId, TaskRef>,
pub objects: HashMap<DataObjectId, DataObjectRef>,
pub executors: HashMap<ExecutorId, ExecutorRef>,
pub idle_executors: RcSet<ExecutorRef>,
pub delete_wait_list: HashMap<DataObjectRef, ::std::time::Instant>,
id_counter: Id,
}
impl Graph {
pub fn new() -> Self {
Self {
ready_tasks: Vec::new(),
running_tasks: HashMap::new(),
tasks: HashMap::new(),
objects: HashMap::new(),
executors: HashMap::new(),
idle_executors: Default::default(),
delete_wait_list: Default::default(),
id_counter: 0,
}
}
pub fn make_id(&mut self) -> Id {
self.id_counter += 1;
self.id_counter
}
}