aven_core/sync/encrypted_tail/
attachments.rs1pub(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}