12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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
- }
|