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.
|
||||
pub trait Ssl {
|
||||
|
||||
Reference in New Issue
Block a user