ducky/devices

Paddy 2015-11-20 Parent:b6494e1a499e

9:f5a9d5f8f28d Go to Latest

ducky/devices/vendor/code.google.com/p/go-uuid/uuid/version4.go

Separate out StorerFactory into its own interface. We had previously included a Factory and Destroy method in the Storer interface, but it makes more sense to separate those out into a StorerFactory interface. This lets us avoid the impression that we're using the same instance of a Storer for every test, separates the test methods away from the methods that are actually used in prod, and hides them from Godoc. What's not to like?

History
paddy@0 1 // Copyright 2011 Google Inc. All rights reserved.
paddy@0 2 // Use of this source code is governed by a BSD-style
paddy@0 3 // license that can be found in the LICENSE file.
paddy@0 4
paddy@0 5 package uuid
paddy@0 6
paddy@0 7 // Random returns a Random (Version 4) UUID or panics.
paddy@0 8 //
paddy@0 9 // The strength of the UUIDs is based on the strength of the crypto/rand
paddy@0 10 // package.
paddy@0 11 //
paddy@0 12 // A note about uniqueness derived from from the UUID Wikipedia entry:
paddy@0 13 //
paddy@0 14 // Randomly generated UUIDs have 122 random bits. One's annual risk of being
paddy@0 15 // hit by a meteorite is estimated to be one chance in 17 billion, that
paddy@0 16 // means the probability is about 0.00000000006 (6 × 10−11),
paddy@0 17 // equivalent to the odds of creating a few tens of trillions of UUIDs in a
paddy@0 18 // year and having one duplicate.
paddy@0 19 func NewRandom() UUID {
paddy@0 20 uuid := make([]byte, 16)
paddy@0 21 randomBits([]byte(uuid))
paddy@0 22 uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4
paddy@0 23 uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10
paddy@0 24 return uuid
paddy@0 25 }