mirror of https://github.com/poanetwork/gecko.git
38 lines
730 B
Go
38 lines
730 B
Go
|
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
|
||
|
// See the file LICENSE for licensing terms.
|
||
|
|
||
|
package timer
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// Clock acts as a thin wrapper around global time that allows for easy testing
|
||
|
type Clock struct {
|
||
|
faked bool
|
||
|
time time.Time
|
||
|
}
|
||
|
|
||
|
// Set the time on the clock
|
||
|
func (c *Clock) Set(time time.Time) { c.faked = true; c.time = time }
|
||
|
|
||
|
// Sync this clock with global time
|
||
|
func (c *Clock) Sync() { c.faked = false }
|
||
|
|
||
|
// Time returns the time on this clock
|
||
|
func (c *Clock) Time() time.Time {
|
||
|
if c.faked {
|
||
|
return c.time
|
||
|
}
|
||
|
return time.Now()
|
||
|
}
|
||
|
|
||
|
// Unix returns the unix time on this clock.
|
||
|
func (c *Clock) Unix() uint64 {
|
||
|
unix := c.Time().Unix()
|
||
|
if unix < 0 {
|
||
|
unix = 0
|
||
|
}
|
||
|
return uint64(unix)
|
||
|
}
|