2018-02-12 20:10:44 +01:00
|
|
|
package main
|
2017-06-23 13:41:59 +02:00
|
|
|
|
|
|
|
import (
|
2017-06-24 15:34:17 +02:00
|
|
|
"bytes"
|
2017-06-23 13:41:59 +02:00
|
|
|
"encoding/binary"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
2018-02-11 19:25:33 +01:00
|
|
|
const TimestampSize = 12
|
|
|
|
const base = uint64(4611686018427387914)
|
2017-06-23 13:41:59 +02:00
|
|
|
|
2018-02-11 19:25:33 +01:00
|
|
|
type Timestamp [TimestampSize]byte
|
2017-06-23 13:41:59 +02:00
|
|
|
|
2018-02-12 20:10:44 +01:00
|
|
|
func TimestampNow() Timestamp {
|
2018-02-11 19:25:33 +01:00
|
|
|
var tai64n Timestamp
|
2017-06-23 13:41:59 +02:00
|
|
|
now := time.Now()
|
2018-02-11 19:25:33 +01:00
|
|
|
secs := base + uint64(now.Unix())
|
2017-06-23 13:41:59 +02:00
|
|
|
nano := uint32(now.UnixNano())
|
|
|
|
binary.BigEndian.PutUint64(tai64n[:], secs)
|
|
|
|
binary.BigEndian.PutUint32(tai64n[8:], nano)
|
|
|
|
return tai64n
|
|
|
|
}
|
2017-06-24 15:34:17 +02:00
|
|
|
|
2018-02-11 19:25:33 +01:00
|
|
|
func (t1 Timestamp) After(t2 Timestamp) bool {
|
2017-06-24 15:34:17 +02:00
|
|
|
return bytes.Compare(t1[:], t2[:]) > 0
|
|
|
|
}
|