github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/catgo/cat-go/cat/common.go (about) 1 package cat 2 3 import ( 4 "strconv" 5 "strings" 6 ) 7 8 type serverAddress struct { 9 host string 10 port int 11 } 12 13 func resolveServerAddresses(router string) (addresses []serverAddress) { 14 for _, segment := range strings.Split(router, ";") { 15 if len(segment) == 0 { 16 continue 17 } 18 fragments := strings.Split(segment, ":") 19 if len(fragments) != 2 { 20 logger.Warning("%s isn't a valid server address.", segment) 21 continue 22 } 23 24 if port, err := strconv.Atoi(fragments[1]); err != nil { 25 logger.Warning("%s isn't a valid server address.", segment) 26 } else { 27 addresses = append(addresses, serverAddress{ 28 host: fragments[0], 29 port: port, 30 }) 31 } 32 } 33 return 34 } 35 36 func compareServerAddress(a, b *serverAddress) bool { 37 if a == nil || b == nil { 38 return false 39 } 40 if strings.Compare(a.host, b.host) == 0 { 41 return a.port == b.port 42 } else { 43 return false 44 } 45 }