diff options
| author | n1c00o <n@nc0.fr> | 2023-02-05 14:05:26 +0100 | 
|---|---|---|
| committer | Nicolas <34602094+n1c00o@users.noreply.github.com> | 2023-02-06 22:35:54 +0100 | 
| commit | b371cb11a5877ede8847351e95c7847b5024a551 (patch) | |
| tree | 958227cf8562503246976744b89370d389de5f66 /vendor/github.com/google/uuid/version1.go | |
| parent | 03e0c597ad5f3539ad33976fe02c11a9e39f34d6 (diff) | |
Init Go module
Diffstat (limited to 'vendor/github.com/google/uuid/version1.go')
| -rw-r--r-- | vendor/github.com/google/uuid/version1.go | 44 | 
1 files changed, 44 insertions, 0 deletions
diff --git a/vendor/github.com/google/uuid/version1.go b/vendor/github.com/google/uuid/version1.go new file mode 100644 index 0000000..4631096 --- /dev/null +++ b/vendor/github.com/google/uuid/version1.go @@ -0,0 +1,44 @@ +// Copyright 2016 Google Inc.  All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( +	"encoding/binary" +) + +// NewUUID returns a Version 1 UUID based on the current NodeID and clock +// sequence, and the current time.  If the NodeID has not been set by SetNodeID +// or SetNodeInterface then it will be set automatically.  If the NodeID cannot +// be set NewUUID returns nil.  If clock sequence has not been set by +// SetClockSequence then it will be set automatically.  If GetTime fails to +// return the current NewUUID returns nil and an error. +// +// In most cases, New should be used. +func NewUUID() (UUID, error) { +	var uuid UUID +	now, seq, err := GetTime() +	if err != nil { +		return uuid, err +	} + +	timeLow := uint32(now & 0xffffffff) +	timeMid := uint16((now >> 32) & 0xffff) +	timeHi := uint16((now >> 48) & 0x0fff) +	timeHi |= 0x1000 // Version 1 + +	binary.BigEndian.PutUint32(uuid[0:], timeLow) +	binary.BigEndian.PutUint16(uuid[4:], timeMid) +	binary.BigEndian.PutUint16(uuid[6:], timeHi) +	binary.BigEndian.PutUint16(uuid[8:], seq) + +	nodeMu.Lock() +	if nodeID == zeroID { +		setNodeInterface("") +	} +	copy(uuid[10:], nodeID[:]) +	nodeMu.Unlock() + +	return uuid, nil +}  | 
