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