perf(client): reduce an allocation per http2 connection

This commit is contained in:
Sean McArthur
2018-04-25 16:40:34 -07:00
parent f44fa0e64e
commit 604ebfbf6f
2 changed files with 4 additions and 6 deletions

View File

@@ -37,7 +37,7 @@ tokio-executor = { version = "0.1.0", optional = true }
tokio-io = "0.1" tokio-io = "0.1"
tokio-reactor = { version = "0.1", optional = true } tokio-reactor = { version = "0.1", optional = true }
tokio-tcp = { version = "0.1", optional = true } tokio-tcp = { version = "0.1", optional = true }
want = "0.0.3" want = "0.0.4"
[dev-dependencies] [dev-dependencies]
num_cpus = "1.0" num_cpus = "1.0"

View File

@@ -1,5 +1,3 @@
use std::sync::Arc;
use futures::{Async, Poll, Stream}; use futures::{Async, Poll, Stream};
use futures::sync::{mpsc, oneshot}; use futures::sync::{mpsc, oneshot};
use want; use want;
@@ -47,8 +45,8 @@ pub struct Sender<T, U> {
/// Cannot poll the Giver, but can still use it to determine if the Receiver /// Cannot poll the Giver, but can still use it to determine if the Receiver
/// has been dropped. However, this version can be cloned. /// has been dropped. However, this version can be cloned.
pub struct UnboundedSender<T, U> { pub struct UnboundedSender<T, U> {
// Only used for `is_closed`, since mpsc::UnboundedSender cannot be checked. /// Only used for `is_closed`, since mpsc::UnboundedSender cannot be checked.
giver: Arc<want::Giver>, giver: want::SharedGiver,
inner: mpsc::UnboundedSender<Envelope<T, U>>, inner: mpsc::UnboundedSender<Envelope<T, U>>,
} }
@@ -101,7 +99,7 @@ impl<T, U> Sender<T, U> {
pub fn unbound(self) -> UnboundedSender<T, U> { pub fn unbound(self) -> UnboundedSender<T, U> {
UnboundedSender { UnboundedSender {
giver: Arc::new(self.giver), giver: self.giver.shared(),
inner: self.inner, inner: self.inner,
} }
} }