feat(http): add get_ref methods to Encoder and Decoder
This commit is contained in:
@@ -98,6 +98,12 @@ pub struct BufReader<'a, R: io::Read + 'a> {
|
|||||||
reader: &'a mut R
|
reader: &'a mut R
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a, R: io::Read + 'a> BufReader<'a, R> {
|
||||||
|
pub fn get_ref(&self) -> &R {
|
||||||
|
self.reader
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'a, R: io::Read> Read for BufReader<'a, R> {
|
impl<'a, R: io::Read> Read for BufReader<'a, R> {
|
||||||
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
|
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
|
||||||
trace!("BufReader.read self={}, buf={}", self.buf.len(), buf.len());
|
trace!("BufReader.read self={}, buf={}", self.buf.len(), buf.len());
|
||||||
|
|||||||
@@ -44,6 +44,15 @@ enum Trans<'a, T: Read + 'a> {
|
|||||||
Buf(self::buffer::BufReader<'a, T>)
|
Buf(self::buffer::BufReader<'a, T>)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a, T: Read + 'a> Trans<'a, T> {
|
||||||
|
fn get_ref(&self) -> &T {
|
||||||
|
match *self {
|
||||||
|
Trans::Port(ref t) => &*t,
|
||||||
|
Trans::Buf(ref buf) => buf.get_ref()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'a, T: Read + 'a> Read for Trans<'a, T> {
|
impl<'a, T: Read + 'a> Read for Trans<'a, T> {
|
||||||
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
|
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
|
||||||
match *self {
|
match *self {
|
||||||
@@ -62,12 +71,27 @@ impl<'a, T: Read> Decoder<'a, T> {
|
|||||||
fn h1(decoder: &'a mut h1::Decoder, transport: Trans<'a, T>) -> Decoder<'a, T> {
|
fn h1(decoder: &'a mut h1::Decoder, transport: Trans<'a, T>) -> Decoder<'a, T> {
|
||||||
Decoder(DecoderImpl::H1(decoder, transport))
|
Decoder(DecoderImpl::H1(decoder, transport))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get a reference to the transport.
|
||||||
|
pub fn get_ref(&self) -> &T {
|
||||||
|
match self.0 {
|
||||||
|
DecoderImpl::H1(_, ref transport) => transport.get_ref()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T: Transport> Encoder<'a, T> {
|
impl<'a, T: Transport> Encoder<'a, T> {
|
||||||
fn h1(encoder: &'a mut h1::Encoder, transport: &'a mut T) -> Encoder<'a, T> {
|
fn h1(encoder: &'a mut h1::Encoder, transport: &'a mut T) -> Encoder<'a, T> {
|
||||||
Encoder(EncoderImpl::H1(encoder, transport))
|
Encoder(EncoderImpl::H1(encoder, transport))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// Get a reference to the transport.
|
||||||
|
pub fn get_ref(&self) -> &T {
|
||||||
|
match self.0 {
|
||||||
|
EncoderImpl::H1(_, ref transport) => &*transport
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T: Read> Read for Decoder<'a, T> {
|
impl<'a, T: Read> Read for Decoder<'a, T> {
|
||||||
|
|||||||
11
src/net.rs
11
src/net.rs
@@ -53,11 +53,6 @@ pub enum Blocked {
|
|||||||
Write,
|
Write,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Transport for HttpStream {
|
|
||||||
fn take_socket_error(&mut self) -> io::Result<()> {
|
|
||||||
self.0.take_socket_error()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Accepts sockets asynchronously.
|
/// Accepts sockets asynchronously.
|
||||||
pub trait Accept: Evented {
|
pub trait Accept: Evented {
|
||||||
@@ -73,6 +68,12 @@ pub trait Accept: Evented {
|
|||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct HttpStream(pub TcpStream);
|
pub struct HttpStream(pub TcpStream);
|
||||||
|
|
||||||
|
impl Transport for HttpStream {
|
||||||
|
fn take_socket_error(&mut self) -> io::Result<()> {
|
||||||
|
self.0.take_socket_error()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Read for HttpStream {
|
impl Read for HttpStream {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
|
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
//!
|
//!
|
||||||
//! These are requests that a `hyper::Server` receives, and include its method,
|
//! These are requests that a `hyper::Server` receives, and include its method,
|
||||||
//! target URI, headers, and message body.
|
//! target URI, headers, and message body.
|
||||||
//use std::net::SocketAddr;
|
|
||||||
|
|
||||||
use version::HttpVersion;
|
use version::HttpVersion;
|
||||||
use method::Method;
|
use method::Method;
|
||||||
@@ -16,7 +15,6 @@ pub fn new(incoming: RequestHead) -> Request {
|
|||||||
debug!("{:#?}", headers);
|
debug!("{:#?}", headers);
|
||||||
|
|
||||||
Request {
|
Request {
|
||||||
//remote_addr: addr,
|
|
||||||
method: method,
|
method: method,
|
||||||
uri: uri,
|
uri: uri,
|
||||||
headers: headers,
|
headers: headers,
|
||||||
|
|||||||
Reference in New Issue
Block a user