meter: fix internal labels sorting

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2021-02-18 15:57:42 +03:00
parent 47e75c31c7
commit 7eb6d030dc
4 changed files with 50 additions and 44 deletions

View File

@@ -82,25 +82,6 @@ type Labels struct {
vals []string
}
type labels Labels
func (ls labels) sort() {
sort.Sort(ls)
}
func (ls labels) Len() int {
return len(ls.keys)
}
func (ls labels) Swap(i, j int) {
ls.keys[i], ls.keys[j] = ls.keys[j], ls.keys[i]
ls.vals[i], ls.vals[j] = ls.vals[j], ls.vals[i]
}
func (ls labels) Less(i, j int) bool {
return ls.vals[i] < ls.vals[j]
}
// Append adds labels to label set
func (ls Labels) Append(nls Labels) Labels {
for n := range nls.keys {
@@ -110,10 +91,30 @@ func (ls Labels) Append(nls Labels) Labels {
return ls
}
// Len returns number of labels
func (ls Labels) Len() int {
return len(ls.keys)
}
type labels Labels
func (ls labels) Len() int {
return len(ls.keys)
}
func (ls labels) Sort() {
sort.Sort(ls)
}
func (ls labels) Swap(i, j int) {
ls.keys[i], ls.keys[j] = ls.keys[j], ls.keys[i]
ls.vals[i], ls.vals[j] = ls.vals[j], ls.vals[i]
}
func (ls labels) Less(i, j int) bool {
return ls.keys[i] < ls.keys[j]
}
// LabelIter holds the
type LabelIter struct {
labels Labels
@@ -123,7 +124,7 @@ type LabelIter struct {
// Iter returns labels iterator
func (ls Labels) Iter() *LabelIter {
labels(ls).sort()
labels(ls).Sort()
return &LabelIter{labels: ls, cnt: len(ls.keys)}
}