diff options
| author | 2021-08-12 21:03:24 +0200 | |
|---|---|---|
| committer | 2021-08-12 21:03:24 +0200 | |
| commit | 98263a7de64269898a2f81207e38943b5c8e8653 (patch) | |
| tree | 743c90f109a6c5d27832d1dcef2388d939f0f77a /vendor/github.com/google/uuid/version1.go | |
| parent | Text duplication fix (#137) (diff) | |
| download | gotosocial-98263a7de64269898a2f81207e38943b5c8e8653.tar.xz | |
Grand test fixup (#138)
* start fixing up tests
* fix up tests + automate with drone
* fiddle with linting
* messing about with drone.yml
* some more fiddling
* hmmm
* add cache
* add vendor directory
* verbose
* ci updates
* update some little things
* update sig
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 000000000..463109629 --- /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 +} | 
