| package clock |
| |
| import "time" |
| |
| type Clock interface { |
| Now() time.Time |
| Sleep(d time.Duration) |
| Since(t time.Time) time.Duration |
| |
| NewTimer(d time.Duration) Timer |
| NewTicker(d time.Duration) Ticker |
| } |
| |
| type realClock struct{} |
| |
| func NewClock() Clock { |
| return &realClock{} |
| } |
| |
| func (clock *realClock) Now() time.Time { |
| return time.Now() |
| } |
| |
| func (clock *realClock) Since(t time.Time) time.Duration { |
| return time.Now().Sub(t) |
| } |
| |
| func (clock *realClock) Sleep(d time.Duration) { |
| <-clock.NewTimer(d).C() |
| } |
| |
| func (clock *realClock) NewTimer(d time.Duration) Timer { |
| return &realTimer{ |
| t: time.NewTimer(d), |
| } |
| } |
| |
| func (clock *realClock) NewTicker(d time.Duration) Ticker { |
| return &realTicker{ |
| t: time.NewTicker(d), |
| } |
| } |