[#345] netmap: Implement an iterator over node endpoints

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
Evgenii Stratonikov 2025-04-04 17:14:27 +03:00
parent 5be3415961
commit b27f172de9
Signed by: fyrchik
SSH key fingerprint: SHA256:m/TTwCzjnRkXgnzEx9X92ccxy1CcVeinOgDb3NPWWmg
3 changed files with 68 additions and 1 deletions

View file

@ -2,6 +2,7 @@ package netmap
import (
"bytes"
"iter"
"slices"
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/api/refs"
@ -442,10 +443,22 @@ func (ni *NodeInfo) NumberOfAddresses() int {
return 0
}
// Addresses returns an iterator over network addresses of the node.
func (ni NodeInfo) Addresses() iter.Seq[string] {
return func(yield func(string) bool) {
for i := range ni.addresses {
if !yield(ni.addresses[i]) {
break
}
}
}
}
// IterateAddresses iterates over network addresses of the node.
// Breaks iteration on f's true return.
//
// Handler should not be nil.
// Deprecated: use [NodeInfo.Addresses] instead.
func (ni *NodeInfo) IterateAddresses(f func(string) bool) {
if ni != nil {
for i := range ni.addresses {