File: clock.go

package info (click to toggle)
golang-github-coder-quartz 0.1.3-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 144 kB
  • sloc: makefile: 2
file content (43 lines) | stat: -rw-r--r-- 2,146 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Package quartz is a library for testing time related code.  It exports an interface Clock that
// mimics the standard library time package functions.  In production, an implementation that calls
// thru to the standard library is used.  In testing, a Mock clock is used to precisely control and
// intercept time functions.
package quartz

import (
	"context"
	"time"
)

type Clock interface {
	// NewTicker returns a new Ticker containing a channel that will send the current time on the
	// channel after each tick. The period of the ticks is specified by the duration argument. The
	// ticker will adjust the time interval or drop ticks to make up for slow receivers. The
	// duration d must be greater than zero; if not, NewTicker will panic. Stop the ticker to
	// release associated resources.
	NewTicker(d time.Duration, tags ...string) *Ticker
	// TickerFunc is a convenience function that calls f on the interval d until either the given
	// context expires or f returns an error.  Callers may call Wait() on the returned Waiter to
	// wait until this happens and obtain the error. The duration d must be greater than zero; if
	// not, TickerFunc will panic.
	TickerFunc(ctx context.Context, d time.Duration, f func() error, tags ...string) Waiter
	// NewTimer creates a new Timer that will send the current time on its channel after at least
	// duration d.
	NewTimer(d time.Duration, tags ...string) *Timer
	// AfterFunc waits for the duration to elapse and then calls f in its own goroutine. It returns
	// a Timer that can be used to cancel the call using its Stop method. The returned Timer's C
	// field is not used and will be nil.
	AfterFunc(d time.Duration, f func(), tags ...string) *Timer

	// Now returns the current local time.
	Now(tags ...string) time.Time
	// Since returns the time elapsed since t. It is shorthand for Clock.Now().Sub(t).
	Since(t time.Time, tags ...string) time.Duration
	// Until returns the duration until t. It is shorthand for t.Sub(Clock.Now()).
	Until(t time.Time, tags ...string) time.Duration
}

// Waiter can be waited on for an error.
type Waiter interface {
	Wait(tags ...string) error
}