1use crate::{Create, Cursor, Entry, FileType, Metadata, Permit, Write};
2use core::marker::PhantomData;
3use serde::{Deserialize, Serialize};
4#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
5pub struct ResponseError {}
6#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
7pub struct RequestIdentify<N: AsRef<str>> {
8 pub path: N,
9}
10#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
11pub struct ResponseIdentify {
12 pub file_type: FileType,
13}
14#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
15pub struct RequestOpen<N: AsRef<str>> {
16 pub expect: FileType,
17 pub read: bool,
18 pub write: Option<(Write, Create)>,
19 pub path: N,
20}
21#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
22pub struct ResponseOpen {
23 pub descriptor: u64,
24}
25#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
26pub struct RequestClose {
27 pub descriptor: u64,
28}
29#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
30pub struct ResponseClose {}
31#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
32pub struct RequestMetadata {
33 pub descriptor: u64,
34}
35#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
36pub struct ResponseMetadata {
37 pub metadata: Metadata,
38}
39#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
40pub struct RequestSetmeta {
41 pub descriptor: u64,
42 pub metadata: Metadata,
43}
44#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
45pub struct ResponseSetmeta {}
46#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
47pub struct RequestList {
48 pub descriptor: u64,
49 pub length: u64,
50}
51#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
52pub struct ResponseList<N: AsRef<str>, E: AsRef<[Entry<N>]>> {
53 pub entries: E,
54 pub _phantom_n: PhantomData<N>,
55}
56#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
57pub struct RequestMake<N: AsRef<str>> {
58 pub descriptor: u64,
59 pub file_type: FileType,
60 pub permit: Permit,
61 pub name: N,
62}
63#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
64pub struct ResponseMake {}
65#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
66pub struct RequestRemove<N: AsRef<str>> {
67 pub descriptor: u64,
68 pub name: N,
69}
70#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
71pub struct ResponseRemove {}
72#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
73pub struct RequestRead {
74 pub descriptor: u64,
75 pub length: u64,
76}
77#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
78pub struct ResponseRead<C: AsRef<[u8]>> {
79 pub content: C,
80}
81#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
82pub struct RequestWrite<C: AsRef<[u8]>> {
83 pub descriptor: u64,
84 pub content: C,
85}
86#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
87pub struct ResponseWrite {
88 pub length: u64,
89}
90#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
91pub struct RequestSeek {
92 pub descriptor: u64,
93 pub cursor: Cursor,
94 pub offset: u64,
95}
96#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
97pub struct ResponseSeek {}
98#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
99pub struct RequestTell {
100 pub descriptor: u64,
101}
102#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
103pub struct ResponseTell {
104 pub offset: u64,
105}
106#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
107pub struct RequestCopy {
108 pub from: u64,
109 pub to: u64,
110 pub length: u64,
111}
112#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
113pub struct ResponseCopy {
114 pub length: u64,
115}
116#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
117pub struct RequestLink<N: AsRef<str>> {
118 pub permit: Permit,
119 pub above: bool,
120 pub from: N,
121 pub to: N,
122}
123#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
124pub struct ResponseLink {}
125#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
126pub struct RequestDrop {}
127#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
128pub struct ResponseDrop {}