logtail: add a few new methods to PublicID
These are for use in our internal systems.
import (
"crypto/rand"
"crypto/sha256"
+ "encoding/binary"
"encoding/hex"
"errors"
"fmt"
@@ -156,3 +157,21 @@ func fromHexChar(c byte) (byte, bool) {
return 0, false
}
+
+func (id1 PublicID) Less(id2 PublicID) bool {
+ for i, c1 := range id1[:] {
+ c2 := id2[i]
+ if c1 != c2 {
+ return c1 < c2
+ }
+ }
+ return false // equal
+}
+
+func (id PublicID) IsZero() bool {
+ return id == PublicID{}
+}
+
+func (id PublicID) Prefix64() uint64 {
+ return binary.BigEndian.Uint64(id[:8])
+}
