...
Package deadline
Overview ▹
Index ▹
Variables
ErrTimedOut is the error returned from Run when the deadline expires.
var ErrTimedOut = errors.New("timed out waiting for function to finish")
type Deadline ¶
Deadline implements the deadline/timeout resiliency pattern.
type Deadline struct {
// contains filtered or unexported fields
}
▹ Example
func New ¶
func New(timeout time.Duration) *Deadline
New constructs a new Deadline with the given timeout.
func (*Deadline) Run ¶
func (d *Deadline) Run(work func(<-chan struct{}) error) error
Run runs the given function, passing it a stopper channel. If the deadline passes before the function finishes executing, Run returns ErrTimeOut to the caller and closes the stopper channel so that the work function can attempt to exit gracefully. It does not (and cannot) simply kill the running function, so if it doesn't respect the stopper channel then it may keep running after the deadline passes. If the function finishes before the deadline, then the return value of the function is returned from Run.