linted
This commit is contained in:
parent
9f88dc9530
commit
7154029136
@ -1,7 +1,6 @@
|
||||
package snowflake
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"hash/fnv"
|
||||
"math"
|
||||
"net"
|
||||
@ -15,42 +14,48 @@ const (
|
||||
nodeIDBits = 10
|
||||
sequenceBits = 12
|
||||
|
||||
// Custom Epoch (January 1, 2015 Midnight UTC = 2015-01-01T00:00:00Z)
|
||||
// Custom Epoch (January 1, 2015 Midnight UTC = 2015-01-01T00:00:00Z) .
|
||||
customEpoch int64 = 1420070400000
|
||||
)
|
||||
|
||||
var maxNodeID int64
|
||||
var maxSequence int64
|
||||
var (
|
||||
maxNodeID int64
|
||||
maxSequence int64
|
||||
timestampMutex sync.Mutex
|
||||
sequenceMutex sync.Mutex
|
||||
nodeID int64
|
||||
lastTimestamp int64 = 0
|
||||
sequence int64
|
||||
)
|
||||
|
||||
var nodeID int64
|
||||
var lastTimestamp int64 = 0
|
||||
var sequence int64
|
||||
const two = 2
|
||||
|
||||
func init() {
|
||||
maxNodeID = int64(math.Pow(2, nodeIDBits) - 1)
|
||||
maxSequence = int64(math.Pow(2, sequenceBits) - 1)
|
||||
maxNodeID = int64(math.Pow(two, nodeIDBits) - 1)
|
||||
maxSequence = int64(math.Pow(two, sequenceBits) - 1)
|
||||
nodeID = generateNodeID()
|
||||
}
|
||||
|
||||
func generateNodeID() int64 {
|
||||
var nodeID int64
|
||||
|
||||
if interfaces, err := net.Interfaces(); err == nil {
|
||||
h := fnv.New32a()
|
||||
for _, i := range interfaces {
|
||||
h.Write(i.HardwareAddr)
|
||||
}
|
||||
|
||||
nodeID = int64(h.Sum32())
|
||||
} else {
|
||||
panic("interfaces not available")
|
||||
}
|
||||
|
||||
nodeID = nodeID & maxNodeID
|
||||
|
||||
return nodeID
|
||||
}
|
||||
|
||||
var timestampMutex sync.Mutex
|
||||
var sequenceMutex sync.Mutex
|
||||
|
||||
// Next returns the next logical snowflake
|
||||
// Next returns the next logical snowflake.
|
||||
func Next() int64 {
|
||||
timestampMutex.Lock()
|
||||
currentTimestamp := ts()
|
||||
@ -76,7 +81,6 @@ func Next() int64 {
|
||||
id |= (nodeID << sequenceBits)
|
||||
id |= sequence
|
||||
|
||||
fmt.Printf("%b\n", id)
|
||||
return id
|
||||
}
|
||||
|
||||
@ -88,5 +92,6 @@ func waitNextMillis(currentTimestamp int64) int64 {
|
||||
for currentTimestamp == lastTimestamp {
|
||||
currentTimestamp = ts()
|
||||
}
|
||||
|
||||
return currentTimestamp
|
||||
}
|
||||
|
@ -9,7 +9,6 @@ func TestNext(t *testing.T) {
|
||||
fmt.Printf("node id: %b\n", generateNodeID())
|
||||
fmt.Printf("timestamp: %b\n", ts())
|
||||
fmt.Printf("full token: %b\n", Next())
|
||||
// t.Fail()
|
||||
}
|
||||
|
||||
func BenchmarkNext(b *testing.B) {
|
||||
|
Loading…
Reference in New Issue
Block a user