Skip to main content

runmat_execution/task/
mod.rs

1use serde::{Deserialize, Serialize};
2
3use crate::handle::OutputContract;
4use crate::identity::{ArtifactId, ExecutionScopeId, PoolId, TaskId};
5use crate::resource::ResourceRequest;
6use crate::value::ValuePayload;
7
8#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
9pub struct Callable {
10    pub owner_identity: String,
11    pub qualified_name: String,
12    pub entrypoint_digest: crate::Digest,
13}
14
15#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
16#[serde(rename_all = "snake_case")]
17pub enum RetryPolicy {
18    Never,
19    IdempotentInfrastructure,
20    ExplicitlyIdempotent { max_attempts: u16 },
21    TestPolicy { max_attempts: u16 },
22}
23
24#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
25pub struct TaskRequest {
26    pub id: TaskId,
27    pub scope_id: ExecutionScopeId,
28    pub pool_id: PoolId,
29    pub program_artifact_id: ArtifactId,
30    pub callable: Callable,
31    pub inputs: Vec<ValuePayload>,
32    pub outputs: OutputContract,
33    pub resources: ResourceRequest,
34    pub retry: RetryPolicy,
35    pub deadline_unix_millis: Option<u64>,
36}