chrislu
2 years ago
2 changed files with 47 additions and 42 deletions
@ -0,0 +1,46 @@ |
|||
package cluster |
|||
|
|||
import ( |
|||
"github.com/seaweedfs/seaweedfs/weed/pb" |
|||
"time" |
|||
) |
|||
|
|||
type GroupMembers struct { |
|||
members 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 |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue