diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-02-12 20:10:44 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-02-12 20:13:03 +0100 |
commit | bffe99aeadae09abd02f2bd3184925af6b680535 (patch) | |
tree | 556d223ebcd32b957e62e15353087b93a824641c /tai64n.go | |
parent | 77285c99aa30eb802d0281175990e6809501ec18 (diff) | |
download | wireguard-go-bffe99aeadae09abd02f2bd3184925af6b680535.tar.gz wireguard-go-bffe99aeadae09abd02f2bd3184925af6b680535.zip |
Don't use modules
Feel free to revert this if you have a strong feeling about it. But so
far as I can see, it adds a lot of complexity for basically no upsides.
Diffstat (limited to 'tai64n.go')
-rw-r--r-- | tai64n.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tai64n.go b/tai64n.go new file mode 100644 index 0000000..8c5ebe0 --- /dev/null +++ b/tai64n.go @@ -0,0 +1,26 @@ +package main + +import ( + "bytes" + "encoding/binary" + "time" +) + +const TimestampSize = 12 +const base = uint64(4611686018427387914) + +type Timestamp [TimestampSize]byte + +func TimestampNow() Timestamp { + var tai64n Timestamp + now := time.Now() + secs := base + uint64(now.Unix()) + nano := uint32(now.UnixNano()) + binary.BigEndian.PutUint64(tai64n[:], secs) + binary.BigEndian.PutUint32(tai64n[8:], nano) + return tai64n +} + +func (t1 Timestamp) After(t2 Timestamp) bool { + return bytes.Compare(t1[:], t2[:]) > 0 +} |