func()

in exponential/policy.go [184:231]


func (p Policy) timeTable() TimeTable {
	tt := TimeTable{
		Entries: []TimeTableEntry{
			{
				Attempt:     1,
				Interval:    0,
				MinInterval: 0,
				MaxInterval: 0,
			},
		},
	}

	interval := p.InitialInterval

	var i int
	for i = 2; interval != p.MaxInterval; i++ {
		minInterval := interval - time.Duration(float64(interval)*p.RandomizationFactor)
		maxInterval := interval + time.Duration(float64(interval)*p.RandomizationFactor)

		entry := TimeTableEntry{
			Attempt:     i,
			Interval:    interval,
			MinInterval: minInterval,
			MaxInterval: maxInterval,
		}
		tt.MinTime += minInterval
		tt.MaxTime += maxInterval
		tt.Entries = append(tt.Entries, entry)

		interval = time.Duration(float64(interval) * p.Multiplier)
		if interval > p.MaxInterval {
			interval = p.MaxInterval
		}
	}

	// This is the final entry at the maximum interval.
	entry := TimeTableEntry{
		Attempt:     i,
		Interval:    interval,
		MinInterval: interval - time.Duration(float64(interval)*p.RandomizationFactor),
		MaxInterval: interval + time.Duration(float64(interval)*p.RandomizationFactor),
	}
	tt.MinTime += entry.MinInterval
	tt.MaxTime += entry.MaxInterval
	tt.Entries = append(tt.Entries, entry)

	return tt
}