diff --git a/pkg/rings/rings.go b/pkg/rings/rings.go index 0f1e8a4..6569105 100644 --- a/pkg/rings/rings.go +++ b/pkg/rings/rings.go @@ -2,6 +2,12 @@ // of a cluster package rings +import ( + "syscall" + + "darvaza.org/core" +) + const ( // RegionMax indicates the highest number that can be used for a [RegionID]. RegionMax = (1 << 4) - 1 @@ -35,3 +41,9 @@ func (n NodeID) Valid() bool { return n > 0 && n <= NodeMax } // ValidZero tells a [NodeID] is within the valid range for a gateway. func (n NodeID) ValidZero() bool { return n > 0 && n <= NodeZeroMax } + +// ErrOutOfRange is an error indicating the value of a field +// is out of range. +func ErrOutOfRange[T ~int | ~uint32](value T, field string) error { + return core.Wrap(syscall.EINVAL, "%s out of range (%v)", field, value) +}