in store/cluster_shard.go [218:255]
func (shard *Shard) ToSlotsString() (string, error) {
var builder strings.Builder
masterNodeIndex := -1
for i, node := range shard.Nodes {
if node.IsMaster() {
masterNodeIndex = i
break
}
}
if masterNodeIndex == -1 {
return "", errors.New("missing master node")
}
for i, node := range shard.Nodes {
builder.WriteString(node.ID())
builder.WriteByte(' ')
builder.WriteString(strings.Replace(node.Addr(), ":", " ", 1))
builder.WriteByte(' ')
if i == masterNodeIndex {
builder.WriteString(RoleMaster)
builder.WriteByte(' ')
builder.WriteByte('-')
builder.WriteByte(' ')
for j, slotRange := range shard.SlotRanges {
builder.WriteString(slotRange.String())
if j != len(shard.SlotRanges)-1 {
builder.WriteByte(' ')
}
}
} else {
builder.WriteString(RoleSlave)
builder.WriteByte(' ')
builder.WriteString(shard.Nodes[masterNodeIndex].ID())
}
builder.WriteByte('\n')
}
return builder.String(), nil
}