45 lines
659 B
Go
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()
|
|
}
|