Update admin socket response sorting

This commit is contained in:
Neil Alexander 2024-09-23 22:40:52 +01:00
parent e138fa679c
commit b8ab843a98
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944
4 changed files with 30 additions and 20 deletions

View File

@ -3,7 +3,7 @@ package admin
import ( import (
"encoding/hex" "encoding/hex"
"net" "net"
"sort" "slices"
"strings" "strings"
"github.com/yggdrasil-network/yggdrasil-go/src/address" "github.com/yggdrasil-network/yggdrasil-go/src/address"
@ -35,8 +35,8 @@ func (a *AdminSocket) getPathsHandler(_ *GetPathsRequest, res *GetPathsResponse)
Sequence: p.Sequence, Sequence: p.Sequence,
}) })
} }
sort.SliceStable(res.Paths, func(i, j int) bool { slices.SortStableFunc(res.Paths, func(a, b PathEntry) int {
return strings.Compare(res.Paths[i].PublicKey, res.Paths[j].PublicKey) < 0 return strings.Compare(a.PublicKey, b.PublicKey)
}) })
return nil return nil
} }

View File

@ -3,7 +3,8 @@ package admin
import ( import (
"encoding/hex" "encoding/hex"
"net" "net"
"sort" "slices"
"strings"
"time" "time"
"github.com/yggdrasil-network/yggdrasil-go/src/address" "github.com/yggdrasil-network/yggdrasil-go/src/address"
@ -61,17 +62,26 @@ func (a *AdminSocket) getPeersHandler(_ *GetPeersRequest, res *GetPeersResponse)
} }
res.Peers = append(res.Peers, peer) res.Peers = append(res.Peers, peer)
} }
sort.Slice(res.Peers, func(i, j int) bool { slices.SortStableFunc(res.Peers, func(a, b PeerEntry) int {
if res.Peers[i].Inbound == res.Peers[j].Inbound { if !a.Inbound && b.Inbound {
if res.Peers[i].PublicKey == res.Peers[j].PublicKey { return -1
if res.Peers[i].Priority == res.Peers[j].Priority {
return res.Peers[i].Uptime > res.Peers[j].Uptime
}
return res.Peers[i].Priority < res.Peers[j].Priority
}
return res.Peers[i].PublicKey < res.Peers[j].PublicKey
} }
return !res.Peers[i].Inbound && res.Peers[j].Inbound if a.Inbound && !b.Inbound {
return 1
}
if d := strings.Compare(a.PublicKey, b.PublicKey); d != 0 {
return d
}
if d := a.Priority - b.Priority; d != 0 {
return int(d)
}
if d := a.Cost - b.Cost; d != 0 {
return int(d)
}
if d := a.Uptime - b.Uptime; d != 0 {
return int(d)
}
return 0
}) })
return nil return nil
} }

View File

@ -3,7 +3,7 @@ package admin
import ( import (
"encoding/hex" "encoding/hex"
"net" "net"
"sort" "slices"
"strings" "strings"
"github.com/yggdrasil-network/yggdrasil-go/src/address" "github.com/yggdrasil-network/yggdrasil-go/src/address"
@ -36,8 +36,8 @@ func (a *AdminSocket) getSessionsHandler(_ *GetSessionsRequest, res *GetSessions
Uptime: s.Uptime.Seconds(), Uptime: s.Uptime.Seconds(),
}) })
} }
sort.SliceStable(res.Sessions, func(i, j int) bool { slices.SortStableFunc(res.Sessions, func(a, b SessionEntry) int {
return strings.Compare(res.Sessions[i].PublicKey, res.Sessions[j].PublicKey) < 0 return strings.Compare(a.PublicKey, b.PublicKey)
}) })
return nil return nil
} }

View File

@ -3,7 +3,7 @@ package admin
import ( import (
"encoding/hex" "encoding/hex"
"net" "net"
"sort" "slices"
"strings" "strings"
"github.com/yggdrasil-network/yggdrasil-go/src/address" "github.com/yggdrasil-network/yggdrasil-go/src/address"
@ -34,8 +34,8 @@ func (a *AdminSocket) getTreeHandler(_ *GetTreeRequest, res *GetTreeResponse) er
Sequence: d.Sequence, Sequence: d.Sequence,
}) })
} }
sort.SliceStable(res.Tree, func(i, j int) bool { slices.SortStableFunc(res.Tree, func(a, b TreeEntry) int {
return strings.Compare(res.Tree[i].PublicKey, res.Tree[j].PublicKey) < 0 return strings.Compare(a.PublicKey, b.PublicKey)
}) })
return nil return nil
} }