option.go

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package retry

import "time"

type option func(*Config)

// Count sets number of retry attempts.
func Count(n int) func(*Config) {
    return func(s *Config) {
        s.count = n
    }
}

// Sleep sets sleep time between attempts.
func Sleep(d time.Duration) func(*Config) {
    return func(c *Config) {
        c.sleep = d
    }
}

// Jitter sets sleep-jitter value - if set, every attempt
// will await for sleep_value + jitter_value * attempt_number.
func Jitter(d time.Duration) func(*Config) {
    return func(c *Config) {
        c.jitter = d
    }
}

// Verbose sets verbosity of retry process.
func Verbose(v bool) func(*Config) {
    return func(c *Config) {
        c.verbose = v
    }
}

// Parallelism sets max parallelism count, zero (default) - indicates no limit.
func Parallelism(n int) func(*Config) {
    return func(c *Config) {
        c.parallelism = n
    }
}

// Mode sets sleep mode - linear, exponential or simple (by default).
func Mode(m mode) func(*Config) {
    return func(c *Config) {
        c.mode = m
    }
}

// Fatal sets errors, that will act as non-retriable.
func Fatal(errs ...error) func(*Config) {
    return func(c *Config) {
        c.fatal = append(c.fatal, errs...)
    }
}