diff options
Diffstat (limited to 'vendor/github.com/google/uuid/version7.go')
-rw-r--r-- | vendor/github.com/google/uuid/version7.go | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/vendor/github.com/google/uuid/version7.go b/vendor/github.com/google/uuid/version7.go deleted file mode 100644 index ba9dd5e..0000000 --- a/vendor/github.com/google/uuid/version7.go +++ /dev/null | |||
@@ -1,75 +0,0 @@ | |||
1 | // Copyright 2023 Google Inc. All rights reserved. | ||
2 | // Use of this source code is governed by a BSD-style | ||
3 | // license that can be found in the LICENSE file. | ||
4 | |||
5 | package uuid | ||
6 | |||
7 | import ( | ||
8 | "io" | ||
9 | ) | ||
10 | |||
11 | // UUID version 7 features a time-ordered value field derived from the widely | ||
12 | // implemented and well known Unix Epoch timestamp source, | ||
13 | // the number of milliseconds seconds since midnight 1 Jan 1970 UTC, leap seconds excluded. | ||
14 | // As well as improved entropy characteristics over versions 1 or 6. | ||
15 | // | ||
16 | // see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#name-uuid-version-7 | ||
17 | // | ||
18 | // Implementations SHOULD utilize UUID version 7 over UUID version 1 and 6 if possible. | ||
19 | // | ||
20 | // NewV7 returns a Version 7 UUID based on the current time(Unix Epoch). | ||
21 | // Uses the randomness pool if it was enabled with EnableRandPool. | ||
22 | // On error, NewV7 returns Nil and an error | ||
23 | func NewV7() (UUID, error) { | ||
24 | uuid, err := NewRandom() | ||
25 | if err != nil { | ||
26 | return uuid, err | ||
27 | } | ||
28 | makeV7(uuid[:]) | ||
29 | return uuid, nil | ||
30 | } | ||
31 | |||
32 | // NewV7FromReader returns a Version 7 UUID based on the current time(Unix Epoch). | ||
33 | // it use NewRandomFromReader fill random bits. | ||
34 | // On error, NewV7FromReader returns Nil and an error. | ||
35 | func NewV7FromReader(r io.Reader) (UUID, error) { | ||
36 | uuid, err := NewRandomFromReader(r) | ||
37 | if err != nil { | ||
38 | return uuid, err | ||
39 | } | ||
40 | |||
41 | makeV7(uuid[:]) | ||
42 | return uuid, nil | ||
43 | } | ||
44 | |||
45 | // makeV7 fill 48 bits time (uuid[0] - uuid[5]), set version b0111 (uuid[6]) | ||
46 | // uuid[8] already has the right version number (Variant is 10) | ||
47 | // see function NewV7 and NewV7FromReader | ||
48 | func makeV7(uuid []byte) { | ||
49 | /* | ||
50 | 0 1 2 3 | ||
51 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||
52 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
53 | | unix_ts_ms | | ||
54 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
55 | | unix_ts_ms | ver | rand_a | | ||
56 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
57 | |var| rand_b | | ||
58 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
59 | | rand_b | | ||
60 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
61 | */ | ||
62 | _ = uuid[15] // bounds check | ||
63 | |||
64 | t := timeNow().UnixMilli() | ||
65 | |||
66 | uuid[0] = byte(t >> 40) | ||
67 | uuid[1] = byte(t >> 32) | ||
68 | uuid[2] = byte(t >> 24) | ||
69 | uuid[3] = byte(t >> 16) | ||
70 | uuid[4] = byte(t >> 8) | ||
71 | uuid[5] = byte(t) | ||
72 | |||
73 | uuid[6] = 0x70 | (uuid[6] & 0x0F) | ||
74 | // uuid[8] has already has right version | ||
75 | } | ||