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  }