1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
use std::convert::TryFrom;
pub const MAX_PENDING_REQS: u32 = 16 * 1024;
pub const INVALID_REQUEST_HANDLE: u32 = std::u32::MAX - 1;
pub const INVALID_PENDING_REQUEST_HANDLE: u32 = std::u32::MAX - 1;
pub const INVALID_RESPONSE_HANDLE: u32 = std::u32::MAX - 1;
pub const INVALID_BODY_HANDLE: u32 = std::u32::MAX - 1;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(transparent)]
pub struct XqdStatus {
pub code: i32,
}
impl XqdStatus {
pub const OK: Self = Self { code: 0 };
pub const ERROR: Self = Self { code: -1 };
pub fn is_ok(&self) -> bool {
self == &Self::OK
}
pub fn is_err(&self) -> bool {
!self.is_ok()
}
}
pub const XQD_ABI_VERSION: u64 = 1;
#[derive(Clone, Copy, Eq, Hash, Ord, PartialEq, PartialOrd)]
#[repr(u32)]
pub enum HttpVersion {
Http09 = 0,
Http10 = 1,
Http11 = 2,
H2 = 3,
H3 = 4,
}
impl TryFrom<u32> for HttpVersion {
type Error = String;
fn try_from(x: u32) -> Result<Self, Self::Error> {
if x == Self::Http09 as u32 {
Ok(Self::Http09)
} else if x == Self::Http10 as u32 {
Ok(Self::Http10)
} else if x == Self::Http11 as u32 {
Ok(Self::Http11)
} else if x == Self::H2 as u32 {
Ok(Self::H2)
} else if x == Self::H3 as u32 {
Ok(Self::H3)
} else {
Err(format!("unknown http version enum value: {}", x))
}
}
}
impl From<http::Version> for HttpVersion {
fn from(v: http::Version) -> Self {
match v {
http::Version::HTTP_09 => Self::Http09,
http::Version::HTTP_10 => Self::Http10,
http::Version::HTTP_11 => Self::Http11,
http::Version::HTTP_2 => Self::H2,
http::Version::HTTP_3 => Self::H3,
_ => unreachable!(),
}
}
}
impl From<HttpVersion> for http::Version {
fn from(v: HttpVersion) -> Self {
match v {
HttpVersion::Http09 => Self::HTTP_09,
HttpVersion::Http10 => Self::HTTP_10,
HttpVersion::Http11 => Self::HTTP_11,
HttpVersion::H2 => Self::HTTP_2,
HttpVersion::H3 => Self::HTTP_3,
}
}
}
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
#[repr(u32)]
pub enum BodyWriteEnd {
Back = 0,
Front = 1,
}