sark_http/field/metadata/block/
mod.rs1use crate::field::metadata::map::record::Span;
2
3pub mod buffer;
4mod framing;
5mod gate;
6mod name;
7mod outcome;
8mod plan;
9mod scan;
10pub mod table;
11mod value;
12
13pub use framing::{Content, ContentError, Framing};
14pub use gate::Gate;
15pub use name::Name;
16pub use outcome::Outcome;
17pub use plan::Plan;
18pub use scan::Scan;
19pub use value::Value;
20
21#[derive(Clone, Copy, PartialEq, Eq)]
23pub struct Named<'a> {
24 span: Span<'a>,
25 proof: Name,
26}
27
28impl<'a> Named<'a> {
29 pub fn from_span(span: Span<'a>) -> Self {
30 Self::from_scanned(span, Name::from_span(span))
31 }
32
33 pub const fn from_slice(bytes: &'a [u8]) -> Self {
34 Self::from_scanned(Span::from_slice(bytes), Name::classify(bytes))
35 }
36
37 pub(crate) const fn from_scanned(span: Span<'a>, proof: Name) -> Self {
38 Self { span, proof }
39 }
40
41 pub const fn span(self) -> Span<'a> {
42 self.span
43 }
44
45 pub const fn proof(self) -> Name {
46 self.proof
47 }
48}
49
50#[derive(Clone, Copy, PartialEq, Eq)]
53pub struct Valued<'a> {
54 span: Span<'a>,
55 validation: Validation,
56}
57
58impl<'a> Valued<'a> {
59 pub fn from_span(span: Span<'a>) -> Self {
60 Self::from_scanned(span, Value::from_span(span).finish())
61 }
62
63 pub(crate) const fn from_scanned(span: Span<'a>, check: Validation) -> Self {
64 Self {
65 span,
66 validation: check,
67 }
68 }
69
70 pub const fn span(self) -> Span<'a> {
71 self.span
72 }
73
74 pub const fn validation(self) -> Validation {
75 self.validation
76 }
77}
78
79#[derive(Clone, Copy, PartialEq, Eq)]
80#[repr(u8)]
81pub enum Kind {
82 Request,
83 Response,
84 Trailers,
85 PushPromise,
86}
87
88#[derive(Clone, Copy, PartialEq, Eq)]
90#[repr(u8)]
91pub enum Connect {
92 Disabled,
93 Enabled,
94}
95
96#[derive(Clone, Copy, PartialEq, Eq)]
98#[repr(u8)]
99pub enum Version {
100 Two,
101 Three,
102}
103
104#[derive(Clone, Copy, PartialEq, Eq, Debug)]
105#[repr(u8)]
106pub enum Validation {
107 Valid,
108 Malformed,
109 RejectPush,
110}
111
112#[derive(Clone, Copy, Debug, PartialEq, Eq)]
114pub enum Response {
115 Informational,
116 Final,
117}
118
119#[derive(Clone, Copy, Debug, PartialEq, Eq)]
120#[repr(u8)]
121pub enum Form {
122 Path,
123 Asterisk,
124 Connect,
125 ExtendedConnect,
126}
127
128#[derive(Clone, Copy, Debug, PartialEq, Eq)]
129#[repr(u8)]
130pub enum Authority {
131 None,
132 Pseudo,
133 Host,
134 Target,
135}
136
137const _: () = {
138 assert!(core::mem::size_of::<Connect>() == core::mem::size_of::<bool>());
139 assert!(core::mem::align_of::<Connect>() == core::mem::align_of::<bool>());
140 assert!(core::mem::size_of::<Version>() == core::mem::size_of::<bool>());
141 assert!(core::mem::align_of::<Version>() == core::mem::align_of::<bool>());
142};