canic_core/dto/fixture_provisioning/
mod.rs1use crate::ids::{ManagedCanisterBinding, ReleaseBuildId};
4use candid::{CandidType, Principal};
5use serde::{Deserialize, Serialize};
6
7#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
9pub struct FixtureChunkDescriptor {
10 pub digest: [u8; 32],
11 pub length: u32,
12}
13
14#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
16pub struct FixtureDescriptor {
17 pub schema_version: u16,
18 pub format_hash: [u8; 32],
19 pub encoded_length: u64,
20 pub chunks: Vec<FixtureChunkDescriptor>,
21 pub completion_summary: [u8; 32],
22}
23
24#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
26pub struct FixtureChunkUpload {
27 pub content_id: [u8; 32],
28 pub index: u32,
29 pub bytes: Vec<u8>,
30}
31
32#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
34pub struct FixtureSourceStatus {
35 pub content_id: [u8; 32],
36 pub next_chunk: u32,
37 pub chunk_count: u32,
38 pub received_bytes: u64,
39 pub complete: bool,
40}
41
42#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
44pub struct FixtureTargetBinding {
45 pub target: ManagedCanisterBinding,
46 pub installation: [u8; 32],
47 pub release_build_id: ReleaseBuildId,
48 pub content_id: [u8; 32],
49}
50
51#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
53pub struct FixtureGrantRequest {
54 pub expected_revision: u64,
55 pub binding: FixtureTargetBinding,
56 pub enabled: bool,
57}
58
59#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
61pub struct FixtureGrant {
62 pub revision: u64,
63 pub binding: FixtureTargetBinding,
64 pub enabled: bool,
65}
66
67#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
69pub struct FixtureChunkRead {
70 pub grant: FixtureGrant,
71 pub index: u32,
72}
73
74#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
76pub enum FixtureStoreError {
77 Authority,
78 Bounds,
79 Capacity,
80 Conflict,
81 Content,
82 NotFound,
83 NotReady,
84 Sequence,
85}
86
87#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
89pub struct FixtureAssignment {
90 pub store: Principal,
91 pub grant: FixtureGrant,
92 pub descriptor: FixtureDescriptor,
93}
94
95#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
97pub struct FixtureImportReceipt {
98 pub binding: FixtureTargetBinding,
99 pub completion_summary: [u8; 32],
100}
101
102#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
104pub struct FixtureImportProgress {
105 pub binding: FixtureTargetBinding,
106 pub next_chunk: u32,
107 pub receipt: Option<Box<FixtureImportReceipt>>,
108}
109
110#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
112pub enum FixtureProvisioningStatus {
113 NotRequired,
114 AwaitingImporter,
115 Pending(Option<Box<FixtureImportProgress>>),
116 Complete(Box<FixtureImportReceipt>),
117 Failed(FixtureImportFailure),
118}
119
120#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
122pub enum FixtureImportError {
123 Application { code: u32 },
124 Authority,
125 Busy,
126 Codec(crate::dto::error::Error),
127 ImporterMissing,
128 NotReady,
129 Progress,
130 Receipt,
131 Registration,
132 Runtime(crate::dto::error::Error),
133 Source(FixtureStoreError),
134 SourceRejected(crate::dto::error::Error),
135 Transport(crate::dto::error::Error),
136}
137
138pub use crate::domain::fixture_import::FixtureImportFailure;