Skip to main content

aven_core/sync/encrypted_tail/
attachments.rs

1//! Opaque image representations, separate from local plaintext content addressing.
2pub(crate) mod client;
3pub(crate) mod codec;
4pub(crate) mod server;
5pub use client::{Download, ImageSourceUnavailable, Upload};
6pub use codec::{CHUNK_BYTES, HTTP_LIMIT, TRANSFER_BYTES};
7use serde::{Deserialize, Serialize};
8
9#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
10#[serde(deny_unknown_fields)]
11pub struct Ticket {
12    pub reservation: [u8; 32],
13}
14#[derive(Clone, Serialize, Deserialize)]
15#[serde(deny_unknown_fields)]
16pub enum Operation {
17    Declare {
18        workspace: String,
19        #[serde(with = "crate::sync::base64_bytes")]
20        descriptor: Vec<u8>,
21    },
22    Status {
23        workspace: String,
24        object: [u8; 32],
25        descriptor_commitment: [u8; 32],
26    },
27    Put {
28        workspace: String,
29        object: [u8; 32],
30        descriptor_commitment: [u8; 32],
31        reservation: [u8; 32],
32        index: usize,
33        #[serde(with = "crate::sync::base64_bytes")]
34        record: Vec<u8>,
35    },
36    Complete {
37        workspace: String,
38        object: [u8; 32],
39        descriptor_commitment: [u8; 32],
40        reservation: [u8; 32],
41    },
42    Read {
43        workspace: String,
44        object: [u8; 32],
45        descriptor_commitment: [u8; 32],
46        index: usize,
47    },
48    Release {
49        workspace: String,
50        object: [u8; 32],
51        descriptor_commitment: [u8; 32],
52        reservation: [u8; 32],
53    },
54}
55#[derive(Clone, Serialize, Deserialize)]
56#[serde(deny_unknown_fields)]
57pub struct Status {
58    pub complete: bool,
59    pub missing: Vec<usize>,
60    pub reservation: Option<[u8; 32]>,
61    pub expires_at: Option<i64>,
62}
63#[derive(Clone, Serialize, Deserialize)]
64#[serde(deny_unknown_fields)]
65pub enum Reply {
66    Status(Status),
67    Chunk(#[serde(with = "crate::sync::base64_bytes")] Vec<u8>),
68    Unavailable,
69    Done,
70}