diff --git a/Cargo.lock b/Cargo.lock index 38fea3664..1241e07ed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1797,6 +1797,14 @@ dependencies = [ "url", ] +[[package]] +name = "linkerd-http-version" +version = "0.1.0" +dependencies = [ + "http", + "thiserror", +] + [[package]] name = "linkerd-identity" version = "0.1.0" @@ -2158,6 +2166,7 @@ dependencies = [ "linkerd-http-classify", "linkerd-http-executor", "linkerd-http-h2", + "linkerd-http-version", "linkerd-io", "linkerd-proxy-balance", "linkerd-stack", diff --git a/Cargo.toml b/Cargo.toml index d19e89e86..d1614d272 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ members = [ "linkerd/http/prom", "linkerd/http/retry", "linkerd/http/route", + "linkerd/http/version", "linkerd/identity", "linkerd/idle-cache", "linkerd/io", diff --git a/linkerd/http/version/Cargo.toml b/linkerd/http/version/Cargo.toml new file mode 100644 index 000000000..fad416181 --- /dev/null +++ b/linkerd/http/version/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "linkerd-http-version" +version = "0.1.0" +authors = ["Linkerd Developers "] +license = "Apache-2.0" +edition = "2021" +publish = false +description = """ +HTTP version types. +""" + +[dependencies] +http = "0.2" +thiserror = "1" diff --git a/linkerd/proxy/http/src/version.rs b/linkerd/http/version/src/lib.rs similarity index 84% rename from linkerd/proxy/http/src/version.rs rename to linkerd/http/version/src/lib.rs index c8a71b37d..9a9f45228 100644 --- a/linkerd/proxy/http/src/version.rs +++ b/linkerd/http/version/src/lib.rs @@ -1,11 +1,19 @@ +//! HTTP version types. +//! +//! See [`Version`]. + use thiserror::Error; +/// HTTP protocol version. #[derive(Copy, Clone, PartialEq, Eq, Hash)] pub enum Version { + /// HTTP/1 Http1, + /// HTTP/2 H2, } +/// An unsupported HTTP version error. #[derive(Debug, Error)] #[error("unsupported HTTP version {:?}", self.0)] pub struct Unsupported(http::Version); diff --git a/linkerd/proxy/http/Cargo.toml b/linkerd/proxy/http/Cargo.toml index b856a6977..dbf7abb7b 100644 --- a/linkerd/proxy/http/Cargo.toml +++ b/linkerd/proxy/http/Cargo.toml @@ -42,9 +42,10 @@ linkerd-detect = { path = "../../detect" } linkerd-duplex = { path = "../../duplex" } linkerd-error = { path = "../../error" } linkerd-http-box = { path = "../../http/box" } +linkerd-http-classify = { path = "../../http/classify" } linkerd-http-executor = { path = "../../http/executor" } linkerd-http-h2 = { path = "../../http/h2" } -linkerd-http-classify = { path = "../../http/classify" } +linkerd-http-version = { path = "../../http/version" } linkerd-io = { path = "../../io" } linkerd-proxy-balance = { path = "../balance" } linkerd-stack = { path = "../../stack" } diff --git a/linkerd/proxy/http/src/lib.rs b/linkerd/proxy/http/src/lib.rs index 4e7ae8df9..4bb3f8646 100644 --- a/linkerd/proxy/http/src/lib.rs +++ b/linkerd/proxy/http/src/lib.rs @@ -23,7 +23,6 @@ pub mod stream_timeouts; pub mod strip_header; pub mod timeout; pub mod upgrade; -pub mod version; pub use self::{ balance::NewBalance, @@ -41,7 +40,6 @@ pub use self::{ stream_timeouts::{EnforceTimeouts, StreamTimeouts}, strip_header::StripHeader, timeout::{NewTimeout, ResponseTimeout, ResponseTimeoutError}, - version::Version, }; pub use http::{ header::{self, HeaderMap, HeaderName, HeaderValue}, @@ -50,6 +48,7 @@ pub use http::{ pub use hyper::body::HttpBody; pub use linkerd_http_box::{BoxBody, BoxRequest, BoxResponse, EraseResponse}; pub use linkerd_http_executor::TracingExecutor; +pub use linkerd_http_version::{self as version, Version}; #[derive(Clone, Debug)] pub struct HeaderPair(pub HeaderName, pub HeaderValue);