Coverage Report

Created: 2025-11-16 06:37

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/hyper-1.6.0/src/proto/mod.rs
Line
Count
Source
1
//! Pieces pertaining to the HTTP message protocol.
2
3
cfg_feature! {
4
    #![feature = "http1"]
5
6
    pub(crate) mod h1;
7
8
    pub(crate) use self::h1::Conn;
9
10
    #[cfg(feature = "client")]
11
    pub(crate) use self::h1::dispatch;
12
    #[cfg(feature = "server")]
13
    pub(crate) use self::h1::ServerTransaction;
14
}
15
16
#[cfg(feature = "http2")]
17
pub(crate) mod h2;
18
19
/// An Incoming Message head. Includes request/status line, and headers.
20
#[cfg(feature = "http1")]
21
#[derive(Debug, Default)]
22
pub(crate) struct MessageHead<S> {
23
    /// HTTP version of the message.
24
    pub(crate) version: http::Version,
25
    /// Subject (request line or status line) of Incoming message.
26
    pub(crate) subject: S,
27
    /// Headers of the Incoming message.
28
    pub(crate) headers: http::HeaderMap,
29
    /// Extensions.
30
    extensions: http::Extensions,
31
}
32
33
/// An incoming request message.
34
#[cfg(feature = "http1")]
35
pub(crate) type RequestHead = MessageHead<RequestLine>;
36
37
#[derive(Debug, Default, PartialEq)]
38
#[cfg(feature = "http1")]
39
pub(crate) struct RequestLine(pub(crate) http::Method, pub(crate) http::Uri);
40
41
/// An incoming response message.
42
#[cfg(all(feature = "http1", feature = "client"))]
43
pub(crate) type ResponseHead = MessageHead<http::StatusCode>;
44
45
#[derive(Debug)]
46
#[cfg(feature = "http1")]
47
pub(crate) enum BodyLength {
48
    /// Content-Length
49
    Known(u64),
50
    /// Transfer-Encoding: chunked (if h1)
51
    Unknown,
52
}
53
54
/// Status of when a Dispatcher future completes.
55
pub(crate) enum Dispatched {
56
    /// Dispatcher completely shutdown connection.
57
    Shutdown,
58
    /// Dispatcher has pending upgrade, and so did not shutdown.
59
    #[cfg(feature = "http1")]
60
    Upgrade(crate::upgrade::Pending),
61
}
62
63
#[cfg(all(feature = "client", feature = "http1"))]
64
impl MessageHead<http::StatusCode> {
65
0
    fn into_response<B>(self, body: B) -> http::Response<B> {
66
0
        let mut res = http::Response::new(body);
67
0
        *res.status_mut() = self.subject;
68
0
        *res.headers_mut() = self.headers;
69
0
        *res.version_mut() = self.version;
70
0
        *res.extensions_mut() = self.extensions;
71
0
        res
72
0
    }
Unexecuted instantiation: <hyper::proto::MessageHead<http::status::StatusCode>>::into_response::<hyper::body::incoming::Incoming>
Unexecuted instantiation: <hyper::proto::MessageHead<http::status::StatusCode>>::into_response::<()>
73
}