33 lines
664 B
Go
33 lines
664 B
Go
package agent
|
|
|
|
import "slices"
|
|
|
|
// AddPeer adds a peer agent by name.
|
|
func (ag *Agent) AddPeer(name string) {
|
|
ag.peerMu.Lock()
|
|
if ag.peers == nil {
|
|
ag.peers = make(map[string]struct{})
|
|
}
|
|
ag.peers[name] = struct{}{}
|
|
ag.peerMu.Unlock()
|
|
}
|
|
|
|
// RemovePeer removes a peer agent by name.
|
|
func (ag *Agent) RemovePeer(name string) {
|
|
ag.peerMu.Lock()
|
|
delete(ag.peers, name)
|
|
ag.peerMu.Unlock()
|
|
}
|
|
|
|
// Peers returns the sorted list of peer agent names.
|
|
func (ag *Agent) Peers() []string {
|
|
ag.peerMu.RLock()
|
|
defer ag.peerMu.RUnlock()
|
|
out := make([]string, 0, len(ag.peers))
|
|
for name := range ag.peers {
|
|
out = append(out, name)
|
|
}
|
|
slices.Sort(out)
|
|
return out
|
|
}
|