@@ -4,40 +4,52 @@ use crate::infra::ping::PingAddr;
44
55#[ derive( Copy , Clone , PartialEq , Eq , Hash ) ]
66pub enum SpeedCheckMode {
7+ None ,
78 Ping ,
89 Tcp ( u16 ) ,
910 Http ( u16 ) ,
1011 Https ( u16 ) ,
1112}
1213
1314impl SpeedCheckMode {
14- pub fn to_ping_addr ( self , ip_addr : IpAddr ) -> PingAddr {
15- match self {
16- SpeedCheckMode :: Ping => PingAddr :: Icmp ( ip_addr) ,
17- SpeedCheckMode :: Tcp ( port) => PingAddr :: Tcp ( SocketAddr :: new ( ip_addr, port) ) ,
18- SpeedCheckMode :: Http ( port) => PingAddr :: Http ( SocketAddr :: new ( ip_addr, port) ) ,
19- SpeedCheckMode :: Https ( port) => PingAddr :: Https ( SocketAddr :: new ( ip_addr, port) ) ,
20- }
15+ pub fn is_none ( & self ) -> bool {
16+ matches ! ( self , SpeedCheckMode :: None )
17+ }
18+
19+ pub fn to_ping_addr ( self , ip_addr : IpAddr ) -> Option < PingAddr > {
20+ use SpeedCheckMode :: * ;
21+ Some ( match self {
22+ None => return Default :: default ( ) ,
23+ Ping => PingAddr :: Icmp ( ip_addr) ,
24+ Tcp ( port) => PingAddr :: Tcp ( SocketAddr :: new ( ip_addr, port) ) ,
25+ Http ( port) => PingAddr :: Http ( SocketAddr :: new ( ip_addr, port) ) ,
26+ Https ( port) => PingAddr :: Https ( SocketAddr :: new ( ip_addr, port) ) ,
27+ } )
2128 }
2229
2330 pub fn to_ping_addrs ( self , ip_addrs : & [ IpAddr ] ) -> Vec < PingAddr > {
24- ip_addrs. iter ( ) . map ( |ip| self . to_ping_addr ( * ip) ) . collect ( )
31+ ip_addrs
32+ . iter ( )
33+ . flat_map ( |ip| self . to_ping_addr ( * ip) )
34+ . collect ( )
2535 }
2636}
2737
2838impl std:: fmt:: Debug for SpeedCheckMode {
2939 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
40+ use SpeedCheckMode :: * ;
3041 match self {
31- SpeedCheckMode :: Ping => write ! ( f, "ICMP" ) ,
32- SpeedCheckMode :: Tcp ( port) => write ! ( f, "TCP:{port}" ) ,
33- SpeedCheckMode :: Http ( port) => {
42+ None => write ! ( f, "None" ) ,
43+ Ping => write ! ( f, "ICMP" ) ,
44+ Tcp ( port) => write ! ( f, "TCP:{port}" ) ,
45+ Http ( port) => {
3446 if * port == 80 {
3547 write ! ( f, "HTTP" )
3648 } else {
3749 write ! ( f, "HTTP:{port}" )
3850 }
3951 }
40- SpeedCheckMode :: Https ( port) => {
52+ Https ( port) => {
4153 if * port == 443 {
4254 write ! ( f, "HTTPS" )
4355 } else {
0 commit comments