From 8b45af7f314cea7d1db5cb6990088dd8442aa87b Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Thu, 16 May 2019 14:34:28 -0700 Subject: [PATCH] feat(server): add initial window builder methods that take self by-val (#1817) The current `Builder` methods `http2_initial_stream_window_size` and `http2_initial_connection_window_size` take `&mut self`, while every other builder method takes `self`. That breaks up the chaining of options. This patch adds two methods that configure the same option, but take `self` instead, and have an underscore suffix (so, `http2_initial_stream_window_size_`). cc #1814 --- benches/end_to_end.rs | 11 ++++------- src/server/mod.rs | 20 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/benches/end_to_end.rs b/benches/end_to_end.rs index b1ee957c13..1901364db5 100644 --- a/benches/end_to_end.rs +++ b/benches/end_to_end.rs @@ -235,14 +235,11 @@ fn spawn_hello(rt: &mut Runtime, opts: &Opts) -> SocketAddr { let addr = "127.0.0.1:0".parse().unwrap(); let body = opts.response_body; - let mut builder = Server::bind(&addr) + let srv = Server::bind(&addr) .http2_only(opts.http2); - // api woopsie - builder - .http2_initial_stream_window_size(opts.http2_stream_window) - .http2_initial_connection_window_size(opts.http2_conn_window); - - let srv = builder.serve(move || { + .http2_initial_stream_window_size_(opts.http2_stream_window) + .http2_initial_connection_window_size_(opts.http2_conn_window) + .serve(move || { service_fn(move |req: Request| { req .into_body() diff --git a/src/server/mod.rs b/src/server/mod.rs index 826d42b0be..459f17d531 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -302,13 +302,29 @@ impl Builder { self } + // soft-deprecated? deprecation warning just seems annoying... + // reimplemented to take `self` instead of `&mut self` + #[doc(hidden)] + pub fn http2_initial_stream_window_size(&mut self, sz: impl Into>) -> &mut Self { + self.protocol.http2_initial_stream_window_size(sz.into()); + self + } + + // soft-deprecated? deprecation warning just seems annoying... + // reimplemented to take `self` instead of `&mut self` + #[doc(hidden)] + pub fn http2_initial_connection_window_size(&mut self, sz: impl Into>) -> &mut Self { + self.protocol.http2_initial_connection_window_size(sz.into()); + self + } + /// Sets the [`SETTINGS_INITIAL_WINDOW_SIZE`][spec] option for HTTP2 /// stream-level flow control. /// /// Default is 65,535 /// /// [spec]: https://http2.github.io/http2-spec/#SETTINGS_INITIAL_WINDOW_SIZE - pub fn http2_initial_stream_window_size(&mut self, sz: impl Into>) -> &mut Self { + pub fn http2_initial_stream_window_size_(mut self, sz: impl Into>) -> Self { self.protocol.http2_initial_stream_window_size(sz.into()); self } @@ -316,7 +332,7 @@ impl Builder { /// Sets the max connection-level flow control for HTTP2 /// /// Default is 65,535 - pub fn http2_initial_connection_window_size(&mut self, sz: impl Into>) -> &mut Self { + pub fn http2_initial_connection_window_size_(mut self, sz: impl Into>) -> Self { self.protocol.http2_initial_connection_window_size(sz.into()); self }