@@ -87,23 +87,14 @@ impl<'a> AsyncWrite for AsyncUdpSocket<'a> {
87
87
}
88
88
89
89
/// Dialer for connecting to a endpoint to get a async reader and a async writer.
90
- ///
91
- /// # Examples
92
- ///
93
- /// ```
94
- /// use std::net::{IpAddr, Ipv4Addr, SocketAddr};
95
- ///
96
- /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
97
- /// let dialer = Dialer::new(|addr| Box::pin(dial_tcp(addr)), socket);
98
- /// let (r, w) = dialer.dial().await.unwrap();
99
- /// ```
100
90
#[ derive( Debug ) ]
101
91
pub ( crate ) struct Dialer {
102
92
dial : DialFn ,
103
93
addr : SocketAddr ,
104
94
}
105
95
106
96
impl Dialer {
97
+ /// Create a new dialer.
107
98
pub ( crate ) fn new ( dial : DialFn , addr : SocketAddr ) -> Self {
108
99
Self { dial, addr }
109
100
}
@@ -153,3 +144,40 @@ pub(crate) async fn dial_udp(local_endpoint: SocketAddr) -> DialResult {
153
144
Box :: new ( AsyncUdpSocket :: new ( socket) ) ,
154
145
) )
155
146
}
147
+
148
+ #[ cfg( test) ]
149
+ mod test {
150
+ use super :: * ;
151
+ use std:: net:: TcpListener as StdTcpListener ;
152
+
153
+ #[ tokio:: test]
154
+ async fn test_tcp_listener_and_dialer ( ) {
155
+ let port = free_port ( ) . unwrap ( ) ;
156
+ let listener = create_tcp_listener ( port) . await . unwrap ( ) ;
157
+
158
+ let dialer = Dialer :: new (
159
+ |addr| Box :: pin ( dial_tcp ( addr) ) ,
160
+ listener. local_addr ( ) . unwrap ( ) ,
161
+ ) ;
162
+ dialer. dial ( ) . await . unwrap ( ) ;
163
+ }
164
+
165
+ #[ tokio:: test]
166
+ async fn test_udp_socket_and_dialer ( ) {
167
+ let port = free_port ( ) . unwrap ( ) ;
168
+ let socket = create_udp_socket ( port) . await . unwrap ( ) ;
169
+
170
+ let dialer = Dialer :: new (
171
+ |addr| Box :: pin ( dial_udp ( addr) ) ,
172
+ socket. local_addr ( ) . unwrap ( ) ,
173
+ ) ;
174
+ dialer. dial ( ) . await . unwrap ( ) ;
175
+ }
176
+
177
+ /// free_port returns a free port number for testing.
178
+ fn free_port ( ) -> std:: io:: Result < u16 > {
179
+ let listener = StdTcpListener :: bind ( "127.0.0.1:0" ) ?;
180
+ let port = listener. local_addr ( ) ?. port ( ) ;
181
+ Ok ( port)
182
+ }
183
+ }
0 commit comments