Apply rustfmt to test/support crate (#116)
This commit is contained in:
		
				
					committed by
					
						 Sean McArthur
						Sean McArthur
					
				
			
			
				
	
			
			
			
						parent
						
							dad113e17b
						
					
				
				
					commit
					b99c513334
				
			| @@ -3,8 +3,8 @@ use std::fmt; | ||||
| use bytes::{Bytes, IntoBuf}; | ||||
| use http::{self, HeaderMap, HttpTryFrom}; | ||||
|  | ||||
| use h2::frame::{self, Frame, StreamId}; | ||||
| use super::SendFrame; | ||||
| use h2::frame::{self, Frame, StreamId}; | ||||
|  | ||||
| pub const SETTINGS: &'static [u8] = &[0, 0, 0, 4, 0, 0, 0, 0, 0]; | ||||
| pub const SETTINGS_ACK: &'static [u8] = &[0, 0, 0, 4, 1, 0, 0, 0, 0]; | ||||
| @@ -12,7 +12,8 @@ pub const SETTINGS_ACK: &'static [u8] = &[0, 0, 0, 4, 1, 0, 0, 0, 0]; | ||||
| // ==== helper functions to easily construct h2 Frames ==== | ||||
|  | ||||
| pub fn headers<T>(id: T) -> Mock<frame::Headers> | ||||
|     where T: Into<StreamId>, | ||||
| where | ||||
|     T: Into<StreamId>, | ||||
| { | ||||
|     Mock(frame::Headers::new( | ||||
|         id.into(), | ||||
| @@ -22,15 +23,17 @@ pub fn headers<T>(id: T) -> Mock<frame::Headers> | ||||
| } | ||||
|  | ||||
| pub fn data<T, B>(id: T, buf: B) -> Mock<frame::Data> | ||||
|     where T: Into<StreamId>, | ||||
|           B: Into<Bytes>, | ||||
| where | ||||
|     T: Into<StreamId>, | ||||
|     B: Into<Bytes>, | ||||
| { | ||||
|     Mock(frame::Data::new(id.into(), buf.into())) | ||||
| } | ||||
|  | ||||
| pub fn push_promise<T1, T2>(id: T1, promised: T2) -> Mock<frame::PushPromise> | ||||
| where T1: Into<StreamId>, | ||||
|       T2: Into<StreamId>, | ||||
| where | ||||
|     T1: Into<StreamId>, | ||||
|     T2: Into<StreamId>, | ||||
| { | ||||
|     Mock(frame::PushPromise::new( | ||||
|         id.into(), | ||||
| @@ -41,19 +44,22 @@ where T1: Into<StreamId>, | ||||
| } | ||||
|  | ||||
| pub fn window_update<T>(id: T, sz: u32) -> frame::WindowUpdate | ||||
|     where T: Into<StreamId>, | ||||
| where | ||||
|     T: Into<StreamId>, | ||||
| { | ||||
|     frame::WindowUpdate::new(id.into(), sz) | ||||
| } | ||||
|  | ||||
| pub fn go_away<T>(id: T) -> Mock<frame::GoAway> | ||||
|     where T: Into<StreamId>, | ||||
| where | ||||
|     T: Into<StreamId>, | ||||
| { | ||||
|     Mock(frame::GoAway::new(id.into(), frame::Reason::NoError)) | ||||
| } | ||||
|  | ||||
| pub fn reset<T>(id: T) -> Mock<frame::Reset> | ||||
|     where T: Into<StreamId>, | ||||
| where | ||||
|     T: Into<StreamId>, | ||||
| { | ||||
|     Mock(frame::Reset::new(id.into(), frame::Reason::NoError)) | ||||
| } | ||||
| @@ -73,7 +79,9 @@ impl<T: fmt::Debug> fmt::Debug for Mock<T> { | ||||
| } | ||||
|  | ||||
| impl<T> From<Mock<T>> for Frame | ||||
| where T: Into<Frame> { | ||||
| where | ||||
|     T: Into<Frame>, | ||||
| { | ||||
|     fn from(src: Mock<T>) -> Self { | ||||
|         src.0.into() | ||||
|     } | ||||
| @@ -83,30 +91,24 @@ where T: Into<Frame> { | ||||
|  | ||||
| impl Mock<frame::Headers> { | ||||
|     pub fn request<M, U>(self, method: M, uri: U) -> Self | ||||
|         where M: HttpTryInto<http::Method>, | ||||
|               U: HttpTryInto<http::Uri>, | ||||
|     where | ||||
|         M: HttpTryInto<http::Method>, | ||||
|         U: HttpTryInto<http::Uri>, | ||||
|     { | ||||
|         let method = method.try_into().unwrap(); | ||||
|         let uri = uri.try_into().unwrap(); | ||||
|         let (id, _, fields) = self.into_parts(); | ||||
|         let frame = frame::Headers::new( | ||||
|             id, | ||||
|             frame::Pseudo::request(method, uri), | ||||
|             fields | ||||
|         ); | ||||
|         let frame = frame::Headers::new(id, frame::Pseudo::request(method, uri), fields); | ||||
|         Mock(frame) | ||||
|     } | ||||
|  | ||||
|     pub fn response<S>(self, status: S) -> Self | ||||
|         where S: HttpTryInto<http::StatusCode>, | ||||
|     where | ||||
|         S: HttpTryInto<http::StatusCode>, | ||||
|     { | ||||
|         let status = status.try_into().unwrap(); | ||||
|         let (id, _, fields) = self.into_parts(); | ||||
|         let frame = frame::Headers::new( | ||||
|             id, | ||||
|             frame::Pseudo::response(status), | ||||
|             fields | ||||
|         ); | ||||
|         let frame = frame::Headers::new(id, frame::Pseudo::response(status), fields); | ||||
|         Mock(frame) | ||||
|     } | ||||
|  | ||||
| @@ -161,18 +163,15 @@ impl From<Mock<frame::Data>> for SendFrame { | ||||
|  | ||||
| impl Mock<frame::PushPromise> { | ||||
|     pub fn request<M, U>(self, method: M, uri: U) -> Self | ||||
|     where M: HttpTryInto<http::Method>, | ||||
|           U: HttpTryInto<http::Uri>, | ||||
|     where | ||||
|         M: HttpTryInto<http::Method>, | ||||
|         U: HttpTryInto<http::Uri>, | ||||
|     { | ||||
|         let method = method.try_into().unwrap(); | ||||
|         let uri = uri.try_into().unwrap(); | ||||
|         let (id, promised, _, fields) = self.into_parts(); | ||||
|         let frame = frame::PushPromise::new( | ||||
|             id, | ||||
|             promised, | ||||
|             frame::Pseudo::request(method, uri), | ||||
|             fields | ||||
|         ); | ||||
|         let frame = | ||||
|             frame::PushPromise::new(id, promised, frame::Pseudo::request(method, uri), fields); | ||||
|         Mock(frame) | ||||
|     } | ||||
|  | ||||
| @@ -201,15 +200,24 @@ impl From<Mock<frame::PushPromise>> for SendFrame { | ||||
|  | ||||
| impl Mock<frame::GoAway> { | ||||
|     pub fn protocol_error(self) -> Self { | ||||
|         Mock(frame::GoAway::new(self.0.last_stream_id(), frame::Reason::ProtocolError)) | ||||
|         Mock(frame::GoAway::new( | ||||
|             self.0.last_stream_id(), | ||||
|             frame::Reason::ProtocolError, | ||||
|         )) | ||||
|     } | ||||
|  | ||||
|     pub fn flow_control(self) -> Self { | ||||
|         Mock(frame::GoAway::new(self.0.last_stream_id(), frame::Reason::FlowControlError)) | ||||
|         Mock(frame::GoAway::new( | ||||
|             self.0.last_stream_id(), | ||||
|             frame::Reason::FlowControlError, | ||||
|         )) | ||||
|     } | ||||
|  | ||||
|     pub fn frame_size(self) -> Self { | ||||
|         Mock(frame::GoAway::new(self.0.last_stream_id(), frame::Reason::FrameSizeError)) | ||||
|         Mock(frame::GoAway::new( | ||||
|             self.0.last_stream_id(), | ||||
|             frame::Reason::FrameSizeError, | ||||
|         )) | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -264,8 +272,9 @@ pub trait HttpTryInto<T> { | ||||
| } | ||||
|  | ||||
| impl<T, U> HttpTryInto<T> for U | ||||
|     where T: HttpTryFrom<U>, | ||||
|           T::Error: fmt::Debug, | ||||
| where | ||||
|     T: HttpTryFrom<U>, | ||||
|     T::Error: fmt::Debug, | ||||
| { | ||||
|     type Error = T::Error; | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| use futures::{Future, Async, Poll}; | ||||
| use futures::{Async, Future, Poll}; | ||||
|  | ||||
| use std::fmt; | ||||
|  | ||||
| @@ -6,17 +6,21 @@ use std::fmt; | ||||
| pub trait FutureExt: Future { | ||||
|     /// Panic on error | ||||
|     fn unwrap(self) -> Unwrap<Self> | ||||
|         where Self: Sized, | ||||
|               Self::Error: fmt::Debug, | ||||
|     where | ||||
|         Self: Sized, | ||||
|         Self::Error: fmt::Debug, | ||||
|     { | ||||
|         Unwrap { inner: self } | ||||
|         Unwrap { | ||||
|             inner: self, | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /// Panic on error, with a message. | ||||
|     fn expect<T>(self, msg: T) -> Expect<Self> | ||||
|         where Self: Sized, | ||||
|               Self::Error: fmt::Debug, | ||||
|               T: fmt::Display, | ||||
|     where | ||||
|         Self: Sized, | ||||
|         Self::Error: fmt::Debug, | ||||
|         T: fmt::Display, | ||||
|     { | ||||
|         Expect { | ||||
|             inner: self, | ||||
| @@ -28,10 +32,11 @@ pub trait FutureExt: Future { | ||||
|     /// | ||||
|     /// `self` must not resolve before `other` does. | ||||
|     fn drive<T>(self, other: T) -> Drive<Self, T> | ||||
|         where T: Future, | ||||
|               T::Error: fmt::Debug, | ||||
|               Self: Future<Item = ()> + Sized, | ||||
|               Self::Error: fmt::Debug, | ||||
|     where | ||||
|         T: Future, | ||||
|         T::Error: fmt::Debug, | ||||
|         Self: Future<Item = ()> + Sized, | ||||
|         Self::Error: fmt::Debug, | ||||
|     { | ||||
|         Drive { | ||||
|             driver: Some(self), | ||||
| @@ -40,8 +45,7 @@ pub trait FutureExt: Future { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl<T: Future> FutureExt for T { | ||||
| } | ||||
| impl<T: Future> FutureExt for T {} | ||||
|  | ||||
| // ===== Unwrap ====== | ||||
|  | ||||
| @@ -51,9 +55,10 @@ pub struct Unwrap<T> { | ||||
| } | ||||
|  | ||||
| impl<T> Future for Unwrap<T> | ||||
|     where T: Future, | ||||
|           T::Item: fmt::Debug, | ||||
|           T::Error: fmt::Debug, | ||||
| where | ||||
|     T: Future, | ||||
|     T::Item: fmt::Debug, | ||||
|     T::Error: fmt::Debug, | ||||
| { | ||||
|     type Item = T::Item; | ||||
|     type Error = (); | ||||
| @@ -73,9 +78,10 @@ pub struct Expect<T> { | ||||
| } | ||||
|  | ||||
| impl<T> Future for Expect<T> | ||||
|     where T: Future, | ||||
|           T::Item: fmt::Debug, | ||||
|           T::Error: fmt::Debug, | ||||
| where | ||||
|     T: Future, | ||||
|     T::Item: fmt::Debug, | ||||
|     T::Error: fmt::Debug, | ||||
| { | ||||
|     type Item = T::Item; | ||||
|     type Error = (); | ||||
| @@ -96,10 +102,11 @@ pub struct Drive<T, U> { | ||||
| } | ||||
|  | ||||
| impl<T, U> Future for Drive<T, U> | ||||
|     where T: Future<Item = ()>, | ||||
|           U: Future, | ||||
|           T::Error: fmt::Debug, | ||||
|           U::Error: fmt::Debug, | ||||
| where | ||||
|     T: Future<Item = ()>, | ||||
|     U: Future, | ||||
|     T::Error: fmt::Debug, | ||||
|     U::Error: fmt::Debug, | ||||
| { | ||||
|     type Item = (T, U::Item); | ||||
|     type Error = (); | ||||
| @@ -113,9 +120,9 @@ impl<T, U> Future for Drive<T, U> | ||||
|                     // Get the driver | ||||
|                     let driver = self.driver.take().unwrap(); | ||||
|  | ||||
|                     return Ok((driver, val).into()) | ||||
|                 } | ||||
|                 Ok(_) => {} | ||||
|                     return Ok((driver, val).into()); | ||||
|                 }, | ||||
|                 Ok(_) => {}, | ||||
|                 Err(e) => panic!("unexpected error; {:?}", e), | ||||
|             } | ||||
|  | ||||
| @@ -128,8 +135,8 @@ impl<T, U> Future for Drive<T, U> | ||||
|                         looped = true; | ||||
|                         continue; | ||||
|                     } | ||||
|                 } | ||||
|                 Ok(Async::NotReady) => {} | ||||
|                 }, | ||||
|                 Ok(Async::NotReady) => {}, | ||||
|                 Err(e) => panic!("unexpected error; {:?}", e), | ||||
|             } | ||||
|  | ||||
|   | ||||
| @@ -7,10 +7,10 @@ pub extern crate http; | ||||
| #[macro_use] | ||||
| pub extern crate tokio_io; | ||||
|  | ||||
| pub extern crate env_logger; | ||||
| #[macro_use] | ||||
| pub extern crate futures; | ||||
| pub extern crate mock_io; | ||||
| pub extern crate env_logger; | ||||
|  | ||||
| #[macro_use] | ||||
| mod assert; | ||||
|   | ||||
| @@ -1,11 +1,11 @@ | ||||
| use {FutureExt, SendFrame}; | ||||
|  | ||||
| use h2::{self, SendError, RecvError}; | ||||
| use h2::{self, RecvError, SendError}; | ||||
| use h2::frame::{self, Frame}; | ||||
|  | ||||
| use futures::{Async, Future, Stream, Poll}; | ||||
| use futures::task::{self, Task}; | ||||
| use futures::{Async, Future, Poll, Stream}; | ||||
| use futures::sync::oneshot; | ||||
| use futures::task::{self, Task}; | ||||
|  | ||||
| use tokio_io::{AsyncRead, AsyncWrite}; | ||||
| use tokio_io::io::read_exact; | ||||
| @@ -58,7 +58,9 @@ pub fn new() -> (Mock, Handle) { | ||||
|     }; | ||||
|  | ||||
|     let handle = Handle { | ||||
|         codec: h2::Codec::new(Pipe { inner }), | ||||
|         codec: h2::Codec::new(Pipe { | ||||
|             inner, | ||||
|         }), | ||||
|     }; | ||||
|  | ||||
|     (mock, handle) | ||||
| @@ -92,36 +94,37 @@ impl Handle { | ||||
|     } | ||||
|  | ||||
|     /// Read the client preface | ||||
|     pub fn read_preface(self) | ||||
|         -> Box<Future<Item = Self, Error = io::Error>> | ||||
|     { | ||||
|     pub fn read_preface(self) -> Box<Future<Item = Self, Error = io::Error>> { | ||||
|         let buf = vec![0; PREFACE.len()]; | ||||
|         let ret = read_exact(self, buf) | ||||
|             .and_then(|(me, buf)| { | ||||
|                 assert_eq!(buf, PREFACE); | ||||
|                 Ok(me) | ||||
|             }); | ||||
|         let ret = read_exact(self, buf).and_then(|(me, buf)| { | ||||
|             assert_eq!(buf, PREFACE); | ||||
|             Ok(me) | ||||
|         }); | ||||
|  | ||||
|         Box::new(ret) | ||||
|     } | ||||
|  | ||||
|     /// Perform the H2 handshake | ||||
|     pub fn assert_client_handshake(self) | ||||
|         -> Box<Future<Item = (frame::Settings, Self), Error = h2::Error>> | ||||
|     { | ||||
|     pub fn assert_client_handshake( | ||||
|         self, | ||||
|     ) -> Box<Future<Item = (frame::Settings, Self), Error = h2::Error>> { | ||||
|         self.assert_client_handshake_with_settings(frame::Settings::default()) | ||||
|     } | ||||
|  | ||||
|     /// Perform the H2 handshake | ||||
|     pub fn assert_client_handshake_with_settings<T>(mut self, settings: T) | ||||
|         -> Box<Future<Item = (frame::Settings, Self), Error = h2::Error>> | ||||
|     where T: Into<frame::Settings>, | ||||
|     pub fn assert_client_handshake_with_settings<T>( | ||||
|         mut self, | ||||
|         settings: T, | ||||
|     ) -> Box<Future<Item = (frame::Settings, Self), Error = h2::Error>> | ||||
|     where | ||||
|         T: Into<frame::Settings>, | ||||
|     { | ||||
|         let settings = settings.into(); | ||||
|         // Send a settings frame | ||||
|         self.send(settings.into()).unwrap(); | ||||
|  | ||||
|         let ret = self.read_preface().unwrap() | ||||
|         let ret = self.read_preface() | ||||
|             .unwrap() | ||||
|             .and_then(|me| me.into_future().unwrap()) | ||||
|             .map(|(frame, mut me)| { | ||||
|                 match frame { | ||||
| @@ -133,13 +136,13 @@ impl Handle { | ||||
|                         me.send(ack.into()).unwrap(); | ||||
|  | ||||
|                         (settings, me) | ||||
|                     } | ||||
|                     }, | ||||
|                     Some(frame) => { | ||||
|                         panic!("unexpected frame; frame={:?}", frame); | ||||
|                     } | ||||
|                     }, | ||||
|                     None => { | ||||
|                         panic!("unexpected EOF"); | ||||
|                     } | ||||
|                     }, | ||||
|                 } | ||||
|             }) | ||||
|             .then(|res| { | ||||
| @@ -155,8 +158,7 @@ impl Handle { | ||||
|  | ||||
|                         (settings, me) | ||||
|                     }) | ||||
|             }) | ||||
|             ; | ||||
|             }); | ||||
|  | ||||
|         Box::new(ret) | ||||
|     } | ||||
| @@ -177,8 +179,7 @@ impl io::Read for Handle { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl AsyncRead for Handle { | ||||
| } | ||||
| impl AsyncRead for Handle {} | ||||
|  | ||||
| impl io::Write for Handle { | ||||
|     fn write(&mut self, buf: &[u8]) -> io::Result<usize> { | ||||
| @@ -215,7 +216,10 @@ impl Drop for Handle { | ||||
|  | ||||
| impl io::Read for Mock { | ||||
|     fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { | ||||
|         assert!(buf.len() > 0, "attempted read with zero length buffer... wut?"); | ||||
|         assert!( | ||||
|             buf.len() > 0, | ||||
|             "attempted read with zero length buffer... wut?" | ||||
|         ); | ||||
|  | ||||
|         let mut me = self.pipe.inner.lock().unwrap(); | ||||
|  | ||||
| @@ -236,8 +240,7 @@ impl io::Read for Mock { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl AsyncRead for Mock { | ||||
| } | ||||
| impl AsyncRead for Mock {} | ||||
|  | ||||
| impl io::Write for Mock { | ||||
|     fn write(&mut self, buf: &[u8]) -> io::Result<usize> { | ||||
| @@ -273,7 +276,10 @@ impl AsyncWrite for Mock { | ||||
|  | ||||
| impl io::Read for Pipe { | ||||
|     fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { | ||||
|         assert!(buf.len() > 0, "attempted read with zero length buffer... wut?"); | ||||
|         assert!( | ||||
|             buf.len() > 0, | ||||
|             "attempted read with zero length buffer... wut?" | ||||
|         ); | ||||
|  | ||||
|         let mut me = self.inner.lock().unwrap(); | ||||
|  | ||||
| @@ -290,8 +296,7 @@ impl io::Read for Pipe { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl AsyncRead for Pipe { | ||||
| } | ||||
| impl AsyncRead for Pipe {} | ||||
|  | ||||
| impl io::Write for Pipe { | ||||
|     fn write(&mut self, buf: &[u8]) -> io::Result<usize> { | ||||
| @@ -319,38 +324,43 @@ impl AsyncWrite for Pipe { | ||||
| } | ||||
|  | ||||
| pub trait HandleFutureExt { | ||||
|     fn recv_settings(self) -> RecvFrame<Box<Future<Item=(Option<Frame>, Handle), Error=()>>> | ||||
|         where Self: Sized + 'static, | ||||
|               Self: Future<Item=(frame::Settings, Handle)>, | ||||
|               Self::Error: fmt::Debug, | ||||
|     fn recv_settings(self) -> RecvFrame<Box<Future<Item = (Option<Frame>, Handle), Error = ()>>> | ||||
|     where | ||||
|         Self: Sized + 'static, | ||||
|         Self: Future<Item = (frame::Settings, Handle)>, | ||||
|         Self::Error: fmt::Debug, | ||||
|     { | ||||
|         let map = self.map(|(settings, handle)| (Some(settings.into()), handle)).unwrap(); | ||||
|         let map = self.map(|(settings, handle)| (Some(settings.into()), handle)) | ||||
|             .unwrap(); | ||||
|  | ||||
|         let boxed: Box<Future<Item=(Option<Frame>, Handle), Error=()>> = Box::new(map); | ||||
|         let boxed: Box<Future<Item = (Option<Frame>, Handle), Error = ()>> = Box::new(map); | ||||
|         RecvFrame { | ||||
|             inner: boxed, | ||||
|             frame: frame::Settings::default().into(), | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fn ignore_settings(self) -> Box<Future<Item=Handle, Error=()>> | ||||
|         where Self: Sized + 'static, | ||||
|               Self: Future<Item=(frame::Settings, Handle)>, | ||||
|               Self::Error: fmt::Debug, | ||||
|     fn ignore_settings(self) -> Box<Future<Item = Handle, Error = ()>> | ||||
|     where | ||||
|         Self: Sized + 'static, | ||||
|         Self: Future<Item = (frame::Settings, Handle)>, | ||||
|         Self::Error: fmt::Debug, | ||||
|     { | ||||
|         Box::new(self.map(|(_settings, handle)| handle).unwrap()) | ||||
|     } | ||||
|  | ||||
|     fn recv_frame<T>(self, frame: T) -> RecvFrame<<Self as IntoRecvFrame>::Future> | ||||
|         where Self: IntoRecvFrame + Sized, | ||||
|               T: Into<Frame>, | ||||
|     where | ||||
|         Self: IntoRecvFrame + Sized, | ||||
|         T: Into<Frame>, | ||||
|     { | ||||
|         self.into_recv_frame(frame.into()) | ||||
|     } | ||||
|  | ||||
|     fn send_frame<T>(self, frame: T) -> SendFrameFut<Self> | ||||
|         where Self: Sized, | ||||
|               T: Into<SendFrame>, | ||||
|     where | ||||
|         Self: Sized, | ||||
|         T: Into<SendFrame>, | ||||
|     { | ||||
|         SendFrameFut { | ||||
|             inner: self, | ||||
| @@ -358,10 +368,11 @@ pub trait HandleFutureExt { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fn idle_ms(self, ms: usize) -> Box<Future<Item=Handle, Error=Self::Error>> | ||||
|         where Self: Sized + 'static, | ||||
|               Self: Future<Item=Handle>, | ||||
|               Self::Error: fmt::Debug, | ||||
|     fn idle_ms(self, ms: usize) -> Box<Future<Item = Handle, Error = Self::Error>> | ||||
|     where | ||||
|         Self: Sized + 'static, | ||||
|         Self: Future<Item = Handle>, | ||||
|         Self::Error: fmt::Debug, | ||||
|     { | ||||
|         use std::thread; | ||||
|         use std::time::Duration; | ||||
| @@ -383,8 +394,9 @@ pub trait HandleFutureExt { | ||||
|         })) | ||||
|     } | ||||
|  | ||||
|     fn close(self) -> Box<Future<Item=(), Error=()>> | ||||
|         where Self: Future<Error = ()> + Sized + 'static, | ||||
|     fn close(self) -> Box<Future<Item = (), Error = ()>> | ||||
|     where | ||||
|         Self: Future<Error = ()> + Sized + 'static, | ||||
|     { | ||||
|         Box::new(self.map(drop)) | ||||
|     } | ||||
| @@ -396,8 +408,9 @@ pub struct RecvFrame<T> { | ||||
| } | ||||
|  | ||||
| impl<T> Future for RecvFrame<T> | ||||
|     where T: Future<Item=(Option<Frame>, Handle)>, | ||||
|           T::Error: fmt::Debug, | ||||
| where | ||||
|     T: Future<Item = (Option<Frame>, Handle)>, | ||||
|     T::Error: fmt::Debug, | ||||
| { | ||||
|     type Item = Handle; | ||||
|     type Error = (); | ||||
| @@ -418,8 +431,9 @@ pub struct SendFrameFut<T> { | ||||
| } | ||||
|  | ||||
| impl<T> Future for SendFrameFut<T> | ||||
|     where T: Future<Item=Handle>, | ||||
|           T::Error: fmt::Debug, | ||||
| where | ||||
|     T: Future<Item = Handle>, | ||||
|     T::Error: fmt::Debug, | ||||
| { | ||||
|     type Item = Handle; | ||||
|     type Error = (); | ||||
| @@ -452,13 +466,14 @@ impl Future for Idle { | ||||
|             Ok(Async::NotReady) => Ok(Async::NotReady), | ||||
|             res => { | ||||
|                 panic!("Received unexpected frame on handle; frame={:?}", res); | ||||
|             } | ||||
|             }, | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl<T> HandleFutureExt for T | ||||
|     where T: Future + 'static, | ||||
| where | ||||
|     T: Future + 'static, | ||||
| { | ||||
| } | ||||
|  | ||||
| @@ -479,14 +494,16 @@ impl IntoRecvFrame for Handle { | ||||
| } | ||||
|  | ||||
| impl<T> IntoRecvFrame for T | ||||
|     where T: Future<Item=Handle> + 'static, | ||||
|           T::Error: fmt::Debug, | ||||
| where | ||||
|     T: Future<Item = Handle> + 'static, | ||||
|     T::Error: fmt::Debug, | ||||
| { | ||||
|     type Future = Box<Future<Item=(Option<Frame>, Handle), Error=()>>; | ||||
|     type Future = Box<Future<Item = (Option<Frame>, Handle), Error = ()>>; | ||||
|  | ||||
|     fn into_recv_frame(self, frame: Frame) -> RecvFrame<Self::Future> { | ||||
|         let into_fut = Box::new(self.unwrap() | ||||
|             .and_then(|handle| handle.into_future().unwrap()) | ||||
|         let into_fut = Box::new( | ||||
|             self.unwrap() | ||||
|                 .and_then(|handle| handle.into_future().unwrap()), | ||||
|         ); | ||||
|         RecvFrame { | ||||
|             inner: into_fut, | ||||
|   | ||||
| @@ -3,8 +3,8 @@ | ||||
| pub use super::h2; | ||||
|  | ||||
| pub use self::h2::*; | ||||
| pub use self::h2::frame::StreamId; | ||||
| pub use self::h2::client::{self, Client}; | ||||
| pub use self::h2::frame::StreamId; | ||||
| pub use self::h2::server::{self, Server}; | ||||
|  | ||||
| // Re-export mock | ||||
| @@ -20,41 +20,18 @@ pub use super::util; | ||||
| pub use super::{Codec, SendFrame}; | ||||
|  | ||||
| // Re-export useful crates | ||||
| pub use super::{ | ||||
|     http, | ||||
|     bytes, | ||||
|     tokio_io, | ||||
|     futures, | ||||
|     mock_io, | ||||
|     env_logger, | ||||
| }; | ||||
| pub use super::{bytes, env_logger, futures, http, mock_io, tokio_io}; | ||||
|  | ||||
| // Re-export primary future types | ||||
| pub use self::futures::{ | ||||
|     Future, | ||||
|     Sink, | ||||
|     Stream, | ||||
| }; | ||||
| pub use self::futures::{Future, Sink, Stream}; | ||||
|  | ||||
| // And our Future extensions | ||||
| pub use future_ext::{FutureExt, Unwrap}; | ||||
|  | ||||
| // Re-export HTTP types | ||||
| pub use self::http::{ | ||||
|     Request, | ||||
|     Response, | ||||
|     Method, | ||||
|     HeaderMap, | ||||
|     StatusCode, | ||||
| }; | ||||
| pub use self::http::{HeaderMap, Method, Request, Response, StatusCode}; | ||||
|  | ||||
| pub use self::bytes::{ | ||||
|     Buf, | ||||
|     BufMut, | ||||
|     Bytes, | ||||
|     BytesMut, | ||||
|     IntoBuf, | ||||
| }; | ||||
| pub use self::bytes::{Buf, BufMut, Bytes, BytesMut, IntoBuf}; | ||||
|  | ||||
| pub use tokio_io::{AsyncRead, AsyncWrite}; | ||||
|  | ||||
| @@ -63,7 +40,7 @@ pub use std::time::Duration; | ||||
| // ===== Everything under here shouldn't be used ===== | ||||
| // TODO: work on deleting this code | ||||
|  | ||||
| pub use ::futures::future::poll_fn; | ||||
| pub use futures::future::poll_fn; | ||||
|  | ||||
| pub trait MockH2 { | ||||
|     fn handshake(&mut self) -> &mut Self; | ||||
| @@ -84,25 +61,24 @@ pub trait ClientExt { | ||||
| } | ||||
|  | ||||
| impl<T, B> ClientExt for Client<T, B> | ||||
|     where T: AsyncRead + AsyncWrite + 'static, | ||||
|           B: IntoBuf + 'static, | ||||
| where | ||||
|     T: AsyncRead + AsyncWrite + 'static, | ||||
|     B: IntoBuf + 'static, | ||||
| { | ||||
|     fn run<F: Future>(&mut self, f: F) -> Result<F::Item, F::Error> { | ||||
|         use futures::future::{self, Future}; | ||||
|         use futures::future::Either::*; | ||||
|  | ||||
|         let res = future::poll_fn(|| self.poll()) | ||||
|             .select2(f).wait(); | ||||
|         let res = future::poll_fn(|| self.poll()).select2(f).wait(); | ||||
|  | ||||
|         match res { | ||||
|             Ok(A((_, b))) => { | ||||
|                 // Connection is done... | ||||
|                 b.wait() | ||||
|             } | ||||
|             }, | ||||
|             Ok(B((v, _))) => return Ok(v), | ||||
|             Err(A((e, _))) => panic!("err: {:?}", e), | ||||
|             Err(B((e, _))) => return Err(e), | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,12 +1,9 @@ | ||||
| use h2::client; | ||||
|  | ||||
| use futures::{Poll, Async, Future}; | ||||
| use bytes::Bytes; | ||||
| use futures::{Async, Future, Poll}; | ||||
|  | ||||
| pub fn wait_for_capacity(stream: client::Stream<Bytes>, | ||||
|                          target: usize) | ||||
|     -> WaitForCapacity | ||||
| { | ||||
| pub fn wait_for_capacity(stream: client::Stream<Bytes>, target: usize) -> WaitForCapacity { | ||||
|     WaitForCapacity { | ||||
|         stream: Some(stream), | ||||
|         target: target, | ||||
| @@ -36,7 +33,7 @@ impl Future for WaitForCapacity { | ||||
|         println!("CAP={:?}", act); | ||||
|  | ||||
|         if act >= self.target { | ||||
|             return Ok(self.stream.take().unwrap().into()) | ||||
|             return Ok(self.stream.take().unwrap().into()); | ||||
|         } | ||||
|  | ||||
|         Ok(Async::NotReady) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user