|
@ -1,7 +1,6 @@ |
|
|
package super_block |
|
|
package super_block |
|
|
|
|
|
|
|
|
import ( |
|
|
import ( |
|
|
"errors" |
|
|
|
|
|
"fmt" |
|
|
"fmt" |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
@ -15,18 +14,21 @@ func NewReplicaPlacementFromString(t string) (*ReplicaPlacement, error) { |
|
|
rp := &ReplicaPlacement{} |
|
|
rp := &ReplicaPlacement{} |
|
|
for i, c := range t { |
|
|
for i, c := range t { |
|
|
count := int(c - '0') |
|
|
count := int(c - '0') |
|
|
if 0 <= count && count <= 2 { |
|
|
|
|
|
switch i { |
|
|
|
|
|
case 0: |
|
|
|
|
|
rp.DiffDataCenterCount = count |
|
|
|
|
|
case 1: |
|
|
|
|
|
rp.DiffRackCount = count |
|
|
|
|
|
case 2: |
|
|
|
|
|
rp.SameRackCount = count |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
return rp, errors.New("Unknown Replication Type:" + t) |
|
|
|
|
|
|
|
|
if count < 0 { |
|
|
|
|
|
return rp, fmt.Errorf("unknown replication type: %s", t) |
|
|
} |
|
|
} |
|
|
|
|
|
switch i { |
|
|
|
|
|
case 0: |
|
|
|
|
|
rp.DiffDataCenterCount = count |
|
|
|
|
|
case 1: |
|
|
|
|
|
rp.DiffRackCount = count |
|
|
|
|
|
case 2: |
|
|
|
|
|
rp.SameRackCount = count |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
value := rp.DiffDataCenterCount*100 + rp.DiffRackCount*10 + rp.SameRackCount |
|
|
|
|
|
if value > 255 { |
|
|
|
|
|
return rp, fmt.Errorf("unexpected replication type: %s", t) |
|
|
} |
|
|
} |
|
|
return rp, nil |
|
|
return rp, nil |
|
|
} |
|
|
} |
|
|