rings: introduce RingID and a Ring placeholder

Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
2024-06-03 13:56:38 +00:00
parent 6d89e0ea3c
commit 4574b32242
+17
View File
@@ -11,6 +11,8 @@ import (
)
const (
// RingMax indicates the highest [Ring] identifier
RingMax = 4
// RegionMax indicates the highest number that can be used for a [RegionID].
RegionMax = (1 << 4) - 1
// ZoneMax indicates the highest number that can be used for a [ZoneID].
@@ -33,6 +35,21 @@ const (
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].
type RegionID int