Skip to content

Commit 408471e

Browse files
committed
Forward read_buf and write_buf methods
1 parent 7a01fed commit 408471e

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ edition = "2018"
1414
vendored = ["native-tls/vendored"]
1515

1616
[dependencies]
17+
bytes = "0.5"
1718
native-tls = "0.2"
1819
hyper = { version = "0.13", default-features = false, features = ["tcp"] }
1920
tokio = { version = "0.2" }

src/stream.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::io;
33
use std::pin::Pin;
44
use std::task::{Context, Poll};
55

6+
use bytes::{Buf, BufMut};
67
use hyper::client::connect::{Connected, Connection};
78
use tokio::io::{AsyncRead, AsyncWrite};
89
pub use tokio_tls::TlsStream;
@@ -58,6 +59,18 @@ impl<T: AsyncRead + AsyncWrite + Unpin> AsyncRead for MaybeHttpsStream<T> {
5859
MaybeHttpsStream::Https(s) => Pin::new(s).poll_read(cx, buf),
5960
}
6061
}
62+
63+
#[inline]
64+
fn poll_read_buf<B: BufMut>(
65+
self: Pin<&mut Self>,
66+
cx: &mut Context<'_>,
67+
buf: &mut B,
68+
) -> Poll<Result<usize, io::Error>> {
69+
match Pin::get_mut(self) {
70+
MaybeHttpsStream::Http(s) => Pin::new(s).poll_read_buf(cx, buf),
71+
MaybeHttpsStream::Https(s) => Pin::new(s).poll_read_buf(cx, buf),
72+
}
73+
}
6174
}
6275

6376
impl<T: AsyncWrite + AsyncRead + Unpin> AsyncWrite for MaybeHttpsStream<T> {
@@ -73,6 +86,18 @@ impl<T: AsyncWrite + AsyncRead + Unpin> AsyncWrite for MaybeHttpsStream<T> {
7386
}
7487
}
7588

89+
#[inline]
90+
fn poll_write_buf<B: Buf>(
91+
self: Pin<&mut Self>,
92+
cx: &mut Context<'_>,
93+
buf: &mut B,
94+
) -> Poll<Result<usize, io::Error>> {
95+
match Pin::get_mut(self) {
96+
MaybeHttpsStream::Http(s) => Pin::new(s).poll_write_buf(cx, buf),
97+
MaybeHttpsStream::Https(s) => Pin::new(s).poll_write_buf(cx, buf),
98+
}
99+
}
100+
76101
#[inline]
77102
fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), io::Error>> {
78103
match Pin::get_mut(self) {

0 commit comments

Comments
 (0)