clock: github.com/juju/clock Index | Files | Directories

package clock

import "github.com/juju/clock"

Index

Package Files

clock.go wall.go

Variables

var WallClock wallClock

WallClock exposes wall-clock time via the Clock interface.

func Alarm Uses

func Alarm(c Clock, t time.Time) <-chan time.Time

Alarm returns a channel that will have the time sent on it at some point after the supplied time occurs.

This is short for c.After(t.Sub(c.Now())).

type Clock Uses

type Clock interface {
    // Now returns the current clock time.
    Now() time.Time

    // After waits for the duration to elapse and then sends the
    // current time on the returned channel.
    After(time.Duration) <-chan time.Time

    // 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.
    AfterFunc(d time.Duration, f func()) Timer

    // NewTimer creates a new Timer that will send the current time
    // on its channel after at least duration d.
    NewTimer(d time.Duration) Timer
}

Clock provides an interface for dealing with clocks.

type Timer Uses

type Timer interface {
    // When the Timer expires, the current time will be sent on the
    // channel returned from Chan, unless the Timer was created by
    // AfterFunc.
    Chan() <-chan time.Time

    // Reset changes the timer to expire after duration d.
    // It returns true if the timer had been active, false if
    // the timer had expired or been stopped.
    Reset(time.Duration) bool

    // Stop prevents the Timer from firing. It returns true if
    // the call stops the timer, false if the timer has already expired or been stopped.
    // Stop does not close the channel, to prevent a read
    // from the channel succeeding incorrectly.
    Stop() bool
}

The Timer type represents a single event. A Timer must be created with AfterFunc. This interface follows time.Timer's methods but provides easier mocking.

Directories

PathSynopsis
monotonic
testclock

Package clock imports 1 packages (graph) and is imported by 290 packages. Updated 2019-02-18. Refresh now. Tools for package owners.