mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.1 KiB
55 lines
1.1 KiB
package dsig |
|
|
|
import ( |
|
"time" |
|
|
|
"github.com/jonboulle/clockwork" |
|
) |
|
|
|
// Clock wraps a clockwork.Clock (which could be real or fake) in order |
|
// to default to a real clock when a nil *Clock is used. In other words, |
|
// if you attempt to use a nil *Clock it will defer to the real system |
|
// clock. This allows Clock to be easily added to structs with methods |
|
// that currently reference the time package, without requiring every |
|
// instantiation of that struct to be updated. |
|
type Clock struct { |
|
wrapped clockwork.Clock |
|
} |
|
|
|
func (c *Clock) getWrapped() clockwork.Clock { |
|
if c == nil { |
|
return clockwork.NewRealClock() |
|
} |
|
|
|
return c.wrapped |
|
} |
|
|
|
func (c *Clock) After(d time.Duration) <-chan time.Time { |
|
return c.getWrapped().After(d) |
|
} |
|
|
|
func (c *Clock) Sleep(d time.Duration) { |
|
c.getWrapped().Sleep(d) |
|
} |
|
|
|
func (c *Clock) Now() time.Time { |
|
return c.getWrapped().Now() |
|
} |
|
|
|
func NewRealClock() *Clock { |
|
return &Clock{ |
|
wrapped: clockwork.NewRealClock(), |
|
} |
|
} |
|
|
|
func NewFakeClock(wrapped clockwork.Clock) *Clock { |
|
return &Clock{ |
|
wrapped: wrapped, |
|
} |
|
} |
|
|
|
func NewFakeClockAt(t time.Time) *Clock { |
|
return &Clock{ |
|
wrapped: clockwork.NewFakeClockAt(t), |
|
} |
|
}
|
|
|