From 604ebfbf6f47acb0128f00d15ddd8f454988eebc Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Wed, 25 Apr 2018 16:40:34 -0700 Subject: [PATCH] perf(client): reduce an allocation per http2 connection --- Cargo.toml | 2 +- src/client/dispatch.rs | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f3e47952..b263e340 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ tokio-executor = { version = "0.1.0", optional = true } tokio-io = "0.1" tokio-reactor = { version = "0.1", optional = true } tokio-tcp = { version = "0.1", optional = true } -want = "0.0.3" +want = "0.0.4" [dev-dependencies] num_cpus = "1.0" diff --git a/src/client/dispatch.rs b/src/client/dispatch.rs index cdcd8427..f8956d40 100644 --- a/src/client/dispatch.rs +++ b/src/client/dispatch.rs @@ -1,5 +1,3 @@ -use std::sync::Arc; - use futures::{Async, Poll, Stream}; use futures::sync::{mpsc, oneshot}; use want; @@ -47,8 +45,8 @@ pub struct Sender { /// Cannot poll the Giver, but can still use it to determine if the Receiver /// has been dropped. However, this version can be cloned. pub struct UnboundedSender { - // Only used for `is_closed`, since mpsc::UnboundedSender cannot be checked. - giver: Arc, + /// Only used for `is_closed`, since mpsc::UnboundedSender cannot be checked. + giver: want::SharedGiver, inner: mpsc::UnboundedSender>, } @@ -101,7 +99,7 @@ impl Sender { pub fn unbound(self) -> UnboundedSender { UnboundedSender { - giver: Arc::new(self.giver), + giver: self.giver.shared(), inner: self.inner, } }