rings: introduce RingID and its values
Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
@@ -11,6 +11,17 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// UnspecifiedRingID is the zero value of RingID and not considered
|
||||||
|
// valid.
|
||||||
|
UnspecifiedRingID RingID = iota
|
||||||
|
RingZeroID // RingZeroID is the RingID for RingZero (backbone)
|
||||||
|
RingOneID // RingOneID is the RingID for RingOne (local zone)
|
||||||
|
RingTwoID // RingTwoID is the RingID for RingTwo (region services)
|
||||||
|
RingThreeID // RingThreeID is the RingID for RingThree (region cluster pods)
|
||||||
|
|
||||||
|
// RingMax indicates the highest [Ring] identifier
|
||||||
|
RingMax = RingThreeID
|
||||||
|
|
||||||
// RegionMax indicates the highest number that can be used for a [RegionID].
|
// RegionMax indicates the highest number that can be used for a [RegionID].
|
||||||
RegionMax = (1 << 4) - 1
|
RegionMax = (1 << 4) - 1
|
||||||
// ZoneMax indicates the highest number that can be used for a [ZoneID].
|
// ZoneMax indicates the highest number that can be used for a [ZoneID].
|
||||||
@@ -33,6 +44,21 @@ const (
|
|||||||
RingThreeBits = 12
|
RingThreeBits = 12
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// RingID identifies a Ring
|
||||||
|
type RingID int
|
||||||
|
|
||||||
|
// Valid tells a [RingID] is within the valid range.
|
||||||
|
func (n RingID) Valid() bool { return n > 0 && n <= RingMax }
|
||||||
|
|
||||||
|
func (n RingID) String() string {
|
||||||
|
return idString(n)
|
||||||
|
}
|
||||||
|
|
||||||
|
// A Ring identifies what ring an address belongs to
|
||||||
|
type Ring interface {
|
||||||
|
ID() RingID
|
||||||
|
}
|
||||||
|
|
||||||
// RegionID is the identifier of a region, valid between 1 and [RegionMax].
|
// RegionID is the identifier of a region, valid between 1 and [RegionMax].
|
||||||
type RegionID int
|
type RegionID int
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user