aven_protocol/wire/
images.rs1use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5#[serde(deny_unknown_fields)]
6pub struct Ticket {
7 pub reservation: [u8; 32],
8}
9#[derive(Clone, Serialize, Deserialize)]
10#[serde(deny_unknown_fields)]
11pub enum Operation {
12 Declare {
13 workspace: String,
14 #[serde(with = "crate::base64_bytes")]
15 descriptor: Vec<u8>,
16 },
17 Status {
18 workspace: String,
19 object: [u8; 32],
20 descriptor_commitment: [u8; 32],
21 },
22 Put {
23 workspace: String,
24 object: [u8; 32],
25 descriptor_commitment: [u8; 32],
26 reservation: [u8; 32],
27 index: usize,
28 #[serde(with = "crate::base64_bytes")]
29 record: Vec<u8>,
30 },
31 Complete {
32 workspace: String,
33 object: [u8; 32],
34 descriptor_commitment: [u8; 32],
35 reservation: [u8; 32],
36 },
37 Read {
38 workspace: String,
39 object: [u8; 32],
40 descriptor_commitment: [u8; 32],
41 index: usize,
42 },
43 Release {
44 workspace: String,
45 object: [u8; 32],
46 descriptor_commitment: [u8; 32],
47 reservation: [u8; 32],
48 },
49}
50#[derive(Clone, Serialize, Deserialize)]
51#[serde(deny_unknown_fields)]
52pub struct Status {
53 pub complete: bool,
54 pub missing: Vec<usize>,
55 pub reservation: Option<[u8; 32]>,
56 pub expires_at: Option<i64>,
57}
58#[derive(Clone, Serialize, Deserialize)]
59#[serde(deny_unknown_fields)]
60pub enum Reply {
61 Status(Status),
62 Chunk(#[serde(with = "crate::base64_bytes")] Vec<u8>),
63 Unavailable,
64 Done,
65}
66
67pub const PATH: &str = "/e2ee/images/v1";
68pub const DESCRIPTOR_LIMIT: usize = 1984;
69pub const IMAGE_BYTES: usize = 25 * 1048576;
70pub const CHUNK_BYTES: usize = 1048576 + 222;
71pub const TRANSFER_BYTES: usize = IMAGE_BYTES + 25 * 222;
72pub const HTTP_LIMIT: usize = crate::base64_bytes::encoded_len(CHUNK_BYTES) + 16384;