Source File
node.go
Belonging Package
github.com/google/uuid
// 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 uuidimport ()var (nodeMu sync.Mutexifname string // name of interface being usednodeID [6]byte // hardware for version 1 UUIDszeroID [6]byte // nodeID with only 0's)// NodeInterface returns the name of the interface from which the NodeID was// derived. The interface "user" is returned if the NodeID was set by// SetNodeID.func () string {defer nodeMu.Unlock()nodeMu.Lock()return ifname}// SetNodeInterface selects the hardware address to be used for Version 1 UUIDs.// If name is "" then the first usable interface found will be used or a random// Node ID will be generated. If a named interface cannot be found then false// is returned.//// SetNodeInterface never fails when name is "".func ( string) bool {defer nodeMu.Unlock()nodeMu.Lock()return setNodeInterface()}func ( string) bool {, := getHardwareInterface() // null implementation for jsif != "" && != nil {ifname =copy(nodeID[:], )return true}// We found no interfaces with a valid hardware address. If name// does not specify a specific interface generate a random Node ID// (section 4.1.6)if == "" {ifname = "random"randomBits(nodeID[:])return true}return false}// NodeID returns a slice of a copy of the current Node ID, setting the Node ID// if not already set.func () []byte {defer nodeMu.Unlock()nodeMu.Lock()if nodeID == zeroID {setNodeInterface("")}:= nodeIDreturn [:]}// SetNodeID sets the Node ID to be used for Version 1 UUIDs. The first 6 bytes// of id are used. If id is less than 6 bytes then false is returned and the// Node ID is not set.func ( []byte) bool {if len() < 6 {return false}defer nodeMu.Unlock()nodeMu.Lock()copy(nodeID[:], )ifname = "user"return true}// NodeID returns the 6 byte node id encoded in uuid. It returns nil if uuid is// not valid. The NodeID is only well defined for version 1 and 2 UUIDs.func ( UUID) () []byte {var [6]bytecopy([:], [10:])return [:]}
![]() |
The pages are generated with Golds v0.7.6. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |