Adam Štrauch
e06a5cc94b
If there is an update in discovery an function is triggered that can pick it up.
53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
package server
|
|
|
|
import "strings"
|
|
|
|
// Label keeps one piece of information about a single server
|
|
type Label string
|
|
|
|
func (l Label) String() string {
|
|
return string(l)
|
|
}
|
|
|
|
// GetPart returns specific part of the label, if part index is higher than last available index it returns empty string.
|
|
func (l Label) GetPart(idx int) string {
|
|
parts := strings.Split(l.String(), ":")
|
|
|
|
if idx < 0 {
|
|
return ""
|
|
}
|
|
if len(parts) >= idx {
|
|
return ""
|
|
}
|
|
|
|
return parts[idx]
|
|
}
|
|
|
|
// GetPart1 is exactly same as GetPart but it splits the label only once, this is good for IPv6 addresses
|
|
func (l Label) GetPart1(idx int) string {
|
|
parts := strings.SplitN(l.String(), ":", 2)
|
|
|
|
if idx < 0 {
|
|
return ""
|
|
}
|
|
if len(parts) >= idx {
|
|
return ""
|
|
}
|
|
|
|
return parts[idx]
|
|
}
|
|
|
|
// Labels stores multiple Label records
|
|
type Labels []Label
|
|
|
|
// StringSlice return slice of Label as strings
|
|
func (l *Labels) StringSlice() []string {
|
|
labelsString := []string{}
|
|
|
|
for _, label := range *l {
|
|
labelsString = append(labelsString, label.String())
|
|
}
|
|
|
|
return labelsString
|
|
}
|