From 4ac2012a2a757d000a8d09d3b2b37d0c40ae75c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Sun, 19 Jul 2020 21:59:31 +0200 Subject: [PATCH] aquatic_http: move protocol module to new crate aquatic_http_protocol --- Cargo.lock | 21 +++++++++-- Cargo.toml | 1 + aquatic_http/Cargo.toml | 13 +------ aquatic_http/src/lib/common.rs | 6 ++-- aquatic_http/src/lib/handler.rs | 4 +-- aquatic_http/src/lib/lib.rs | 1 - aquatic_http/src/lib/network/connection.rs | 2 +- aquatic_http/src/lib/network/mod.rs | 2 +- aquatic_http_protocol/Cargo.toml | 35 +++++++++++++++++++ .../bench_announce_response_to_bytes.rs | 2 +- .../benches/bench_request_from_path.rs | 2 +- .../src}/common.rs | 0 .../src/lib.rs | 0 .../src}/request.rs | 0 .../src}/response.rs | 0 .../src}/utils.rs | 0 .../bendy/benchmark.json | 0 .../bendy/estimates.json | 0 .../announce-response-to-bytes/bendy/raw.csv | 0 .../bendy/sample.json | 0 .../bendy/tukey.json | 0 .../latest/benchmark.json | 0 .../latest/estimates.json | 0 .../announce-response-to-bytes/latest/raw.csv | 0 .../latest/sample.json | 0 .../latest/tukey.json | 0 .../request-from-path/latest/benchmark.json | 0 .../request-from-path/latest/estimates.json | 0 .../request-from-path/latest/raw.csv | 0 .../request-from-path/latest/sample.json | 0 .../request-from-path/latest/tukey.json | 0 .../no-memchr/benchmark.json | 0 .../no-memchr/estimates.json | 0 .../request-from-path/no-memchr/raw.csv | 0 .../request-from-path/no-memchr/sample.json | 0 .../request-from-path/no-memchr/tukey.json | 0 36 files changed, 65 insertions(+), 24 deletions(-) create mode 100644 aquatic_http_protocol/Cargo.toml rename {aquatic_http => aquatic_http_protocol}/benches/bench_announce_response_to_bytes.rs (96%) rename {aquatic_http => aquatic_http_protocol}/benches/bench_request_from_path.rs (93%) rename {aquatic_http/src/lib/protocol => aquatic_http_protocol/src}/common.rs (100%) rename aquatic_http/src/lib/protocol/mod.rs => aquatic_http_protocol/src/lib.rs (100%) rename {aquatic_http/src/lib/protocol => aquatic_http_protocol/src}/request.rs (100%) rename {aquatic_http/src/lib/protocol => aquatic_http_protocol/src}/response.rs (100%) rename {aquatic_http/src/lib/protocol => aquatic_http_protocol/src}/utils.rs (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/bendy/benchmark.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/bendy/estimates.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/bendy/raw.csv (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/bendy/sample.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/bendy/tukey.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/latest/benchmark.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/latest/estimates.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/latest/raw.csv (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/latest/sample.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/announce-response-to-bytes/latest/tukey.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/latest/benchmark.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/latest/estimates.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/latest/raw.csv (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/latest/sample.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/latest/tukey.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/no-memchr/benchmark.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/no-memchr/estimates.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/no-memchr/raw.csv (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/no-memchr/sample.json (100%) rename {aquatic_http => aquatic_http_protocol}/target/criterion/request-from-path/no-memchr/tukey.json (100%) diff --git a/Cargo.lock b/Cargo.lock index d5359f5..0bc7e1b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -75,8 +75,7 @@ dependencies = [ "aquatic_cli_helpers", "aquatic_common", "aquatic_common_tcp", - "bendy", - "criterion", + "aquatic_http_protocol", "either", "flume", "hashbrown", @@ -98,6 +97,24 @@ dependencies = [ "smartstring", ] +[[package]] +name = "aquatic_http_protocol" +version = "0.1.0" +dependencies = [ + "anyhow", + "bendy", + "criterion", + "hashbrown", + "itoa", + "log", + "memchr", + "quickcheck", + "quickcheck_macros", + "rand", + "serde", + "smartstring", +] + [[package]] name = "aquatic_udp" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 8d4ce60..abbcad2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,7 @@ members = [ "aquatic_common", "aquatic_common_tcp", "aquatic_http", + "aquatic_http_protocol", "aquatic_udp", "aquatic_udp_bench", "aquatic_udp_load_test", diff --git a/aquatic_http/Cargo.toml b/aquatic_http/Cargo.toml index 61f127c..ffee029 100644 --- a/aquatic_http/Cargo.toml +++ b/aquatic_http/Cargo.toml @@ -13,22 +13,12 @@ path = "src/lib/lib.rs" name = "aquatic_http" path = "src/bin/main.rs" -[[bench]] -name = "bench_request_from_path" -path = "benches/bench_request_from_path.rs" -harness = false - -[[bench]] -name = "bench_announce_response_to_bytes" -path = "benches/bench_announce_response_to_bytes.rs" -harness = false - [dependencies] anyhow = "1" aquatic_cli_helpers = { path = "../aquatic_cli_helpers" } aquatic_common = { path = "../aquatic_common" } aquatic_common_tcp = { path = "../aquatic_common_tcp" } -bendy = { version = "0.3", features = ["std", "serde"] } +aquatic_http_protocol = { path = "../aquatic_http_protocol" } either = "1" flume = "0.7" hashbrown = { version = "0.7", features = ["serde"] } @@ -48,6 +38,5 @@ simplelog = "0.8" smartstring = "0.2" [dev-dependencies] -criterion = "0.3" quickcheck = "0.9" quickcheck_macros = "0.9" diff --git a/aquatic_http/src/lib/common.rs b/aquatic_http/src/lib/common.rs index 829d5af..0843c6a 100644 --- a/aquatic_http/src/lib/common.rs +++ b/aquatic_http/src/lib/common.rs @@ -12,9 +12,9 @@ use smartstring::{SmartString, LazyCompact}; pub use aquatic_common::{ValidUntil, convert_ipv4_mapped_ipv4}; -use crate::protocol::common::*; -use crate::protocol::request::Request; -use crate::protocol::response::{Response, ResponsePeer}; +use aquatic_http_protocol::common::*; +use aquatic_http_protocol::request::Request; +use aquatic_http_protocol::response::{Response, ResponsePeer}; pub trait Ip: Copy + Eq + ::std::hash::Hash {} diff --git a/aquatic_http/src/lib/handler.rs b/aquatic_http/src/lib/handler.rs index e0e14a4..a4d9bb4 100644 --- a/aquatic_http/src/lib/handler.rs +++ b/aquatic_http/src/lib/handler.rs @@ -8,12 +8,12 @@ use parking_lot::MutexGuard; use rand::{Rng, SeedableRng, rngs::SmallRng}; use aquatic_common::extract_response_peers; +use aquatic_http_protocol::request::*; +use aquatic_http_protocol::response::*; use crate::common::*; use crate::config::Config; -use crate::protocol::request::*; -use crate::protocol::response::*; pub fn run_request_worker( diff --git a/aquatic_http/src/lib/lib.rs b/aquatic_http/src/lib/lib.rs index d065c61..bff7d53 100644 --- a/aquatic_http/src/lib/lib.rs +++ b/aquatic_http/src/lib/lib.rs @@ -12,7 +12,6 @@ pub mod common; pub mod config; pub mod handler; pub mod network; -pub mod protocol; pub mod tasks; use common::*; diff --git a/aquatic_http/src/lib/network/connection.rs b/aquatic_http/src/lib/network/connection.rs index 12d3f7c..294faae 100644 --- a/aquatic_http/src/lib/network/connection.rs +++ b/aquatic_http/src/lib/network/connection.rs @@ -9,9 +9,9 @@ use mio::net::TcpStream; use native_tls::{TlsAcceptor, MidHandshakeTlsStream}; use aquatic_common_tcp::network::stream::Stream; +use aquatic_http_protocol::request::Request; use crate::common::*; -use crate::protocol::request::Request; #[derive(Debug)] diff --git a/aquatic_http/src/lib/network/mod.rs b/aquatic_http/src/lib/network/mod.rs index e531d70..218a78c 100644 --- a/aquatic_http/src/lib/network/mod.rs +++ b/aquatic_http/src/lib/network/mod.rs @@ -12,10 +12,10 @@ use mio::{Events, Poll, Interest, Token}; use mio::net::TcpListener; use aquatic_common_tcp::network::utils::create_listener; +use aquatic_http_protocol::response::*; use crate::common::*; use crate::config::Config; -use crate::protocol::response::*; use connection::*; diff --git a/aquatic_http_protocol/Cargo.toml b/aquatic_http_protocol/Cargo.toml new file mode 100644 index 0000000..f1de917 --- /dev/null +++ b/aquatic_http_protocol/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "aquatic_http_protocol" +version = "0.1.0" +authors = ["Joakim FrostegÄrd "] +edition = "2018" +license = "Apache-2.0" + +[lib] +name = "aquatic_http_protocol" + +[[bench]] +name = "bench_request_from_path" +path = "benches/bench_request_from_path.rs" +harness = false + +[[bench]] +name = "bench_announce_response_to_bytes" +path = "benches/bench_announce_response_to_bytes.rs" +harness = false + +[dependencies] +anyhow = "1" +bendy = { version = "0.3", features = ["std", "serde"] } +hashbrown = { version = "0.7", features = ["serde"] } +itoa = "0.4" +log = "0.4" +memchr = "2" +rand = { version = "0.7", features = ["small_rng"] } +serde = { version = "1", features = ["derive"] } +smartstring = "0.2" + +[dev-dependencies] +criterion = "0.3" +quickcheck = "0.9" +quickcheck_macros = "0.9" \ No newline at end of file diff --git a/aquatic_http/benches/bench_announce_response_to_bytes.rs b/aquatic_http_protocol/benches/bench_announce_response_to_bytes.rs similarity index 96% rename from aquatic_http/benches/bench_announce_response_to_bytes.rs rename to aquatic_http_protocol/benches/bench_announce_response_to_bytes.rs index 6864491..c3cbb41 100644 --- a/aquatic_http/benches/bench_announce_response_to_bytes.rs +++ b/aquatic_http_protocol/benches/bench_announce_response_to_bytes.rs @@ -3,7 +3,7 @@ use std::time::Duration; use criterion::{black_box, criterion_group, criterion_main, Criterion}; -use aquatic_http::protocol::response::*; +use aquatic_http_protocol::response::*; pub fn bench(c: &mut Criterion) { diff --git a/aquatic_http/benches/bench_request_from_path.rs b/aquatic_http_protocol/benches/bench_request_from_path.rs similarity index 93% rename from aquatic_http/benches/bench_request_from_path.rs rename to aquatic_http_protocol/benches/bench_request_from_path.rs index 9dc6084..ce4956d 100644 --- a/aquatic_http/benches/bench_request_from_path.rs +++ b/aquatic_http_protocol/benches/bench_request_from_path.rs @@ -1,7 +1,7 @@ use std::time::Duration; use criterion::{black_box, criterion_group, criterion_main, Criterion}; -use aquatic_http::protocol::request::Request; +use aquatic_http_protocol::request::Request; static INPUT: &str = "/announce?info_hash=%04%0bkV%3f%5cr%14%a6%b7%98%adC%c3%c9.%40%24%00%b9&peer_id=-TR2940-5ert69muw5t8&port=11000&uploaded=0&downloaded=0&left=0&numwant=0&key=3ab4b977&compact=1&supportcrypto=1&event=stopped"; diff --git a/aquatic_http/src/lib/protocol/common.rs b/aquatic_http_protocol/src/common.rs similarity index 100% rename from aquatic_http/src/lib/protocol/common.rs rename to aquatic_http_protocol/src/common.rs diff --git a/aquatic_http/src/lib/protocol/mod.rs b/aquatic_http_protocol/src/lib.rs similarity index 100% rename from aquatic_http/src/lib/protocol/mod.rs rename to aquatic_http_protocol/src/lib.rs diff --git a/aquatic_http/src/lib/protocol/request.rs b/aquatic_http_protocol/src/request.rs similarity index 100% rename from aquatic_http/src/lib/protocol/request.rs rename to aquatic_http_protocol/src/request.rs diff --git a/aquatic_http/src/lib/protocol/response.rs b/aquatic_http_protocol/src/response.rs similarity index 100% rename from aquatic_http/src/lib/protocol/response.rs rename to aquatic_http_protocol/src/response.rs diff --git a/aquatic_http/src/lib/protocol/utils.rs b/aquatic_http_protocol/src/utils.rs similarity index 100% rename from aquatic_http/src/lib/protocol/utils.rs rename to aquatic_http_protocol/src/utils.rs diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/bendy/benchmark.json b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/benchmark.json similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/bendy/benchmark.json rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/benchmark.json diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/bendy/estimates.json b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/estimates.json similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/bendy/estimates.json rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/estimates.json diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/bendy/raw.csv b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/raw.csv similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/bendy/raw.csv rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/raw.csv diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/bendy/sample.json b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/sample.json similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/bendy/sample.json rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/sample.json diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/bendy/tukey.json b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/tukey.json similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/bendy/tukey.json rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/bendy/tukey.json diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/latest/benchmark.json b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/benchmark.json similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/latest/benchmark.json rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/benchmark.json diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/latest/estimates.json b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/estimates.json similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/latest/estimates.json rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/estimates.json diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/latest/raw.csv b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/raw.csv similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/latest/raw.csv rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/raw.csv diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/latest/sample.json b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/sample.json similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/latest/sample.json rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/sample.json diff --git a/aquatic_http/target/criterion/announce-response-to-bytes/latest/tukey.json b/aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/tukey.json similarity index 100% rename from aquatic_http/target/criterion/announce-response-to-bytes/latest/tukey.json rename to aquatic_http_protocol/target/criterion/announce-response-to-bytes/latest/tukey.json diff --git a/aquatic_http/target/criterion/request-from-path/latest/benchmark.json b/aquatic_http_protocol/target/criterion/request-from-path/latest/benchmark.json similarity index 100% rename from aquatic_http/target/criterion/request-from-path/latest/benchmark.json rename to aquatic_http_protocol/target/criterion/request-from-path/latest/benchmark.json diff --git a/aquatic_http/target/criterion/request-from-path/latest/estimates.json b/aquatic_http_protocol/target/criterion/request-from-path/latest/estimates.json similarity index 100% rename from aquatic_http/target/criterion/request-from-path/latest/estimates.json rename to aquatic_http_protocol/target/criterion/request-from-path/latest/estimates.json diff --git a/aquatic_http/target/criterion/request-from-path/latest/raw.csv b/aquatic_http_protocol/target/criterion/request-from-path/latest/raw.csv similarity index 100% rename from aquatic_http/target/criterion/request-from-path/latest/raw.csv rename to aquatic_http_protocol/target/criterion/request-from-path/latest/raw.csv diff --git a/aquatic_http/target/criterion/request-from-path/latest/sample.json b/aquatic_http_protocol/target/criterion/request-from-path/latest/sample.json similarity index 100% rename from aquatic_http/target/criterion/request-from-path/latest/sample.json rename to aquatic_http_protocol/target/criterion/request-from-path/latest/sample.json diff --git a/aquatic_http/target/criterion/request-from-path/latest/tukey.json b/aquatic_http_protocol/target/criterion/request-from-path/latest/tukey.json similarity index 100% rename from aquatic_http/target/criterion/request-from-path/latest/tukey.json rename to aquatic_http_protocol/target/criterion/request-from-path/latest/tukey.json diff --git a/aquatic_http/target/criterion/request-from-path/no-memchr/benchmark.json b/aquatic_http_protocol/target/criterion/request-from-path/no-memchr/benchmark.json similarity index 100% rename from aquatic_http/target/criterion/request-from-path/no-memchr/benchmark.json rename to aquatic_http_protocol/target/criterion/request-from-path/no-memchr/benchmark.json diff --git a/aquatic_http/target/criterion/request-from-path/no-memchr/estimates.json b/aquatic_http_protocol/target/criterion/request-from-path/no-memchr/estimates.json similarity index 100% rename from aquatic_http/target/criterion/request-from-path/no-memchr/estimates.json rename to aquatic_http_protocol/target/criterion/request-from-path/no-memchr/estimates.json diff --git a/aquatic_http/target/criterion/request-from-path/no-memchr/raw.csv b/aquatic_http_protocol/target/criterion/request-from-path/no-memchr/raw.csv similarity index 100% rename from aquatic_http/target/criterion/request-from-path/no-memchr/raw.csv rename to aquatic_http_protocol/target/criterion/request-from-path/no-memchr/raw.csv diff --git a/aquatic_http/target/criterion/request-from-path/no-memchr/sample.json b/aquatic_http_protocol/target/criterion/request-from-path/no-memchr/sample.json similarity index 100% rename from aquatic_http/target/criterion/request-from-path/no-memchr/sample.json rename to aquatic_http_protocol/target/criterion/request-from-path/no-memchr/sample.json diff --git a/aquatic_http/target/criterion/request-from-path/no-memchr/tukey.json b/aquatic_http_protocol/target/criterion/request-from-path/no-memchr/tukey.json similarity index 100% rename from aquatic_http/target/criterion/request-from-path/no-memchr/tukey.json rename to aquatic_http_protocol/target/criterion/request-from-path/no-memchr/tukey.json