You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package cluster
import ( "github.com/seaweedfs/seaweedfs/weed/pb" "time" )
type GroupMembers struct { members map[pb.ServerAddress]*ClusterNode }
func newGroupMembers() *GroupMembers { return &GroupMembers{ members: make(map[pb.ServerAddress]*ClusterNode), } }
func (m *GroupMembers) addMember(dataCenter DataCenter, rack Rack, address pb.ServerAddress, version string) *ClusterNode { if existingNode, found := m.members[address]; found { existingNode.counter++ return nil } t := &ClusterNode{ Address: address, Version: version, counter: 1, CreatedTs: time.Now(), DataCenter: dataCenter, Rack: rack, } m.members[address] = t return t } func (m *GroupMembers) removeMember(address pb.ServerAddress) bool { if existingNode, found := m.members[address]; !found { return false } else { existingNode.counter-- if existingNode.counter <= 0 { delete(m.members, address) return true } } return false }
func (m *GroupMembers) GetMembers() (addresses []pb.ServerAddress) { for k := range m.members { addresses = append(addresses, k) } return }
|