lux/proto/lux_id.go
2025-01-24 01:58:35 +02:00

45 lines
659 B
Go

package proto
import (
"github.com/google/uuid"
)
type LuxID struct{ uuid.UUID }
const LUX_PROTO_ID_SIZE = 16
func NewLuxID() LuxID {
return LuxID{uuid.New()}
}
func ParseLuxID(idStr string) (LuxID, error) {
uuid, err := uuid.Parse(idStr)
if err != nil {
return LuxID{}, err
}
return LuxID{uuid}, nil
}
func (id *LuxID) Read(rd *LuxBuffer) error {
bytes, err := rd.ReadNext(16)
if err != nil {
return err
}
_id, err := uuid.FromBytes(bytes)
if err != nil {
return err
}
id.UUID = _id
return nil
}
func (id *LuxID) Write(wd *LuxBuffer) {
wd.WriteBytes(id.UUID[:])
}
func (id *LuxID) String() string {
return id.UUID.String()
}