tai64n: whiten nano seconds
Avoid being too precise of a time oracle.
This commit is contained in:
parent
2b7562abbb
commit
a5ca02d79a
|
@ -12,7 +12,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const TimestampSize = 12
|
const TimestampSize = 12
|
||||||
const base = uint64(4611686018427387914)
|
const base = uint64(0x400000000000000a)
|
||||||
|
const whitenerMask = uint32(0x1000000 - 1)
|
||||||
|
|
||||||
type Timestamp [TimestampSize]byte
|
type Timestamp [TimestampSize]byte
|
||||||
|
|
||||||
|
@ -20,7 +21,7 @@ func Now() Timestamp {
|
||||||
var tai64n Timestamp
|
var tai64n Timestamp
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
secs := base + uint64(now.Unix())
|
secs := base + uint64(now.Unix())
|
||||||
nano := uint32(now.Nanosecond())
|
nano := uint32(now.Nanosecond()) &^ whitenerMask
|
||||||
binary.BigEndian.PutUint64(tai64n[:], secs)
|
binary.BigEndian.PutUint64(tai64n[:], secs)
|
||||||
binary.BigEndian.PutUint32(tai64n[8:], nano)
|
binary.BigEndian.PutUint32(tai64n[8:], nano)
|
||||||
return tai64n
|
return tai64n
|
||||||
|
|
Loading…
Reference in a new issue