@@ -60,11 +60,14 @@ struct Summary {
60
60
min_duration_ms : f64 ,
61
61
avg_duration_ms : f64 ,
62
62
max_duration_ms : f64 ,
63
+ resolve_time_ms : f64 ,
63
64
}
64
65
65
66
fn main ( ) {
66
67
let args = Args :: parse ( ) ;
67
68
69
+ let resolve_start = Instant :: now ( ) ;
70
+
68
71
// Validate and resolve the address
69
72
let addr = match args. address . to_socket_addrs ( ) {
70
73
Ok ( mut addrs) => match addrs. next ( ) {
@@ -80,6 +83,8 @@ fn main() {
80
83
}
81
84
} ;
82
85
86
+ let resolve_duration = resolve_start. elapsed ( ) . as_micros ( ) as f64 / 1000.0 ;
87
+
83
88
// Validate the port
84
89
if addr. port ( ) == 0 {
85
90
eprintln ! ( "Error: Invalid port number" ) ;
@@ -101,6 +106,7 @@ fn main() {
101
106
}
102
107
if args. output_mode == OutputMode :: Normal {
103
108
println ! ( ) ;
109
+ println ! ( "Resolved address in {:.4} ms" , resolve_duration) ;
104
110
}
105
111
106
112
let mut successful_pings = 0 ;
@@ -237,6 +243,7 @@ fn main() {
237
243
} else {
238
244
0.0
239
245
} ,
246
+ resolve_time_ms : resolve_duration,
240
247
} ;
241
248
242
249
println ! ( "\n --- {} tcping statistics ---" , addr) ;
@@ -250,6 +257,7 @@ fn main() {
250
257
summary. min_duration_ms, summary. avg_duration_ms, summary. max_duration_ms
251
258
) ;
252
259
}
260
+ println ! ( "Address resolved in {:.4} ms" , summary. resolve_time_ms) ;
253
261
println ! ( ) ;
254
262
} else if args. output_mode == OutputMode :: Json {
255
263
let summary = Summary {
@@ -272,13 +280,14 @@ fn main() {
272
280
} else {
273
281
0.0
274
282
} ,
283
+ resolve_time_ms : resolve_duration,
275
284
} ;
276
285
let json = serde_json:: to_string ( & summary) . unwrap ( ) ;
277
286
println ! ( "{}" , json) ;
278
287
} else if args. output_mode == OutputMode :: Csv {
279
- println ! ( "address,total_probes,successful_probes,packet_loss,min_rtt,avg_rtt,max_rtt" ) ;
288
+ println ! ( "address,total_probes,successful_probes,packet_loss,min_rtt,avg_rtt,max_rtt,resolve_time_ms " ) ;
280
289
println ! (
281
- "{},{},{},{:.2},{:.4},{:.4},{:.4}" ,
290
+ "{},{},{},{:.2},{:.4},{:.4},{:.4},{:.4} " ,
282
291
addr,
283
292
total_attempts,
284
293
successful_pings,
@@ -289,7 +298,8 @@ fn main() {
289
298
} else {
290
299
0.0
291
300
} ,
292
- if successful_pings > 0 { max_duration } else { 0.0 }
301
+ if successful_pings > 0 { max_duration } else { 0.0 } ,
302
+ resolve_duration
293
303
) ;
294
304
}
295
305
}
0 commit comments