runmat_execution/task/
mod.rs1use 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}