canic_core/dto/
cascade.rs1use crate::dto::{prelude::*, state::FleetStateInput};
2#[derive(CandidType, Clone, Debug, Deserialize)]
9pub struct StateSnapshotInput {
10 pub fleet_state: Option<FleetStateInput>,
11}
12
13#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
15pub enum StateCascadeTargetResult {
16 Applied,
17 AppliedWithReconciliationFailure(crate::dto::error::Error),
18 Unconfirmed(crate::dto::error::Error),
19}
20
21#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
23pub struct StateCascadeTargetOutcome {
24 pub canister_id: Principal,
25 pub result: StateCascadeTargetResult,
26}
27
28#[derive(CandidType, Clone, Debug, Default, Deserialize, Eq, PartialEq)]
30pub struct StateCascadeReport {
31 pub successful_targets: u64,
32 pub reconciliation_failures: u64,
33 pub unconfirmed_targets: u64,
34 pub omitted_targets: u64,
35 pub targets: Vec<StateCascadeTargetOutcome>,
36}
37
38#[derive(CandidType, Clone, Debug, Deserialize)]
45pub struct TopologySnapshotInput {
46 pub parents: Vec<TopologyPathNode>,
47 pub children_map: Vec<TopologyChildren>,
49}
50
51#[derive(CandidType, Clone, Debug, Deserialize)]
58pub struct TopologyChildren {
59 pub parent_pid: Principal,
60 pub children: Vec<TopologyDirectChild>,
61}
62
63#[derive(CandidType, Clone, Debug, Deserialize)]
70pub struct TopologyDirectChild {
71 pub pid: Principal,
72 pub role: CanisterRole,
73}
74
75#[derive(CandidType, Clone, Debug, Deserialize)]
82pub struct TopologyPathNode {
83 pub pid: Principal,
84 pub role: CanisterRole,
85 pub parent_pid: Option<Principal>,
86}