use crate::bridge::envelope::{PhysicalPlan, Request};
use crate::types::RequestId;
pub struct ExecutionTask {
pub request: Request,
pub state: TaskState,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum TaskState {
Pending,
Running,
Completed,
Cancelled,
Failed,
}
impl ExecutionTask {
pub fn new(request: Request) -> Self {
Self {
request,
state: TaskState::Pending,
}
}
pub fn request_id(&self) -> RequestId {
self.request.request_id
}
pub fn plan(&self) -> &PhysicalPlan {
&self.request.plan
}
pub fn is_expired(&self) -> bool {
std::time::Instant::now() > self.request.deadline
}
}