Merge pull request #622 from muja/callback_con
feat(net): Implement NetworkConnector for closure to be more flexible
This commit is contained in:
		
							
								
								
									
										28
									
								
								src/net.rs
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								src/net.rs
									
									
									
									
									
								
							| @@ -255,6 +255,34 @@ impl NetworkConnector for HttpConnector { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// A closure as a connector used to generate TcpStreams per request | ||||||
|  | /// | ||||||
|  | /// # Example | ||||||
|  | ///  | ||||||
|  | /// Basic example: | ||||||
|  | ///  | ||||||
|  | /// ```norun | ||||||
|  | /// Client::with_connector(|addr: &str, port: u16, scheme: &str| { | ||||||
|  | ///     TcpStream::connect(&(addr, port)) | ||||||
|  | /// }); | ||||||
|  | /// ``` | ||||||
|  | ///  | ||||||
|  | /// Example using TcpBuilder from the net2 crate if you want to configure your source socket: | ||||||
|  | ///  | ||||||
|  | /// ```norun | ||||||
|  | /// Client::with_connector(|addr: &str, port: u16, scheme: &str| { | ||||||
|  | ///     let b = try!(TcpBuilder::new_v4()); | ||||||
|  | ///     try!(b.bind("127.0.0.1:0")); | ||||||
|  | ///     b.connect(&(addr, port)) | ||||||
|  | /// }); | ||||||
|  | /// ``` | ||||||
|  | impl<F> NetworkConnector for F where F: Fn(&str, u16, &str) -> io::Result<TcpStream> { | ||||||
|  |     type Stream = HttpStream; | ||||||
|  |  | ||||||
|  |     fn connect(&self, host: &str, port: u16, scheme: &str) -> ::Result<HttpStream> { | ||||||
|  |         Ok(HttpStream(try!((*self)(host, port, scheme)))) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| /// An abstraction to allow any SSL implementation to be used with HttpsStreams. | /// An abstraction to allow any SSL implementation to be used with HttpsStreams. | ||||||
| pub trait Ssl { | pub trait Ssl { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user