mirror of https://github.com/v2ray/v2ray-core
parent
95be224caf
commit
2789798390
@ -1,59 +0,0 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Clock is a V2Ray feature that returns current time.
|
||||
type Clock interface {
|
||||
Feature
|
||||
|
||||
// Now returns current time.
|
||||
Now() time.Time
|
||||
}
|
||||
|
||||
type syncClock struct {
|
||||
sync.RWMutex
|
||||
Clock
|
||||
}
|
||||
|
||||
func (c *syncClock) Now() time.Time {
|
||||
c.RLock()
|
||||
defer c.RUnlock()
|
||||
|
||||
if c.Clock == nil {
|
||||
return time.Now()
|
||||
}
|
||||
|
||||
return c.Clock.Now()
|
||||
}
|
||||
|
||||
func (c *syncClock) Start() error {
|
||||
c.RLock()
|
||||
defer c.RUnlock()
|
||||
|
||||
if c.Clock == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return c.Clock.Start()
|
||||
}
|
||||
|
||||
func (c *syncClock) Close() error {
|
||||
c.RLock()
|
||||
defer c.RUnlock()
|
||||
|
||||
if c.Clock == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return c.Clock.Close()
|
||||
}
|
||||
|
||||
func (c *syncClock) Set(clock Clock) {
|
||||
c.Lock()
|
||||
defer c.Unlock()
|
||||
|
||||
c.Clock = clock
|
||||
}
|
Loading…
Reference in new issue