This repository has been archived on 2024-02-11. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
astontest/pkg/discovery/discoveryset.go

35 lines
794 B
Go

package discovery
// DiscoverySet a slice of initialized discovery services.
//
//goland:noinspection GoNameStartsWithPackageName
type DiscoverySet []*Discovery
// NewNodes returns channel with newly discovered node ips.
func (d DiscoverySet) NewNodes() NewNodes {
res := make(chan string, 20)
for _, discovery := range d {
go func(discovery *Discovery) {
for node := range discovery.NewNodes() {
if len(res) == cap(res) {
panic("knownNodes from discovery set not reading!")
}
res <- node
}
}(discovery)
}
return res
}
// FailNodes accept a channel with ip of nodes, that was failed (lost or canceled connection).
func (d DiscoverySet) FailNodes(ch chan string) {
for addr := range ch {
for _, discovery := range d {
discovery.FailNode(addr)
}
}
}