From 4574b3224279dcf026347a7e87c11f6368a092bb Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Mon, 3 Jun 2024 13:56:38 +0000 Subject: [PATCH] rings: introduce RingID and a Ring placeholder Signed-off-by: Alejandro Mery --- pkg/rings/rings.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pkg/rings/rings.go b/pkg/rings/rings.go index 9626120..4b12146 100644 --- a/pkg/rings/rings.go +++ b/pkg/rings/rings.go @@ -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