harddrive_party_shared/
wire_messages.rs1pub use crate::announce_address::{AnnounceAddress, PeerConnectionDetails};
3use serde::{Deserialize, Serialize};
4use thiserror::Error;
5
6#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Hash, Eq)]
10pub enum Request {
11 Ls(IndexQuery),
13 Read(ReadQuery),
15 AnnouncePeer(AnnouncePeer),
17}
18
19#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash, Default)]
21pub struct IndexQuery {
22 pub path: Option<String>,
24 pub searchterm: Option<String>,
26 pub recursive: bool,
28}
29
30#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq, Hash)]
32pub struct ReadQuery {
33 pub path: String,
35 pub start: Option<u64>,
37 pub end: Option<u64>,
39}
40
41#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
43pub enum LsResponse {
44 Success(Vec<Entry>),
46 Err(LsResponseError),
47}
48
49#[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Hash, Eq)]
51pub struct Entry {
52 pub name: String,
54 pub size: u64,
56 pub is_dir: bool,
58}
59
60#[derive(Error, Serialize, Deserialize, PartialEq, Debug, Clone)]
62pub enum LsResponseError {
63 #[error("Database error")]
64 DbError,
65 #[error("Path not found")]
66 PathNotFound,
67 #[error("Internal error: {0}")]
68 InternalServer(String),
69}
70
71#[derive(Serialize, Deserialize, PartialEq, Eq, Debug, Clone, Hash)]
72pub struct AnnouncePeer {
73 pub announce_address: AnnounceAddress,
74 }