|
@@ -74,27 +74,29 @@ func (rw *RollingWindow) span() int {
|
|
|
|
|
|
func (rw *RollingWindow) updateOffset() {
|
|
func (rw *RollingWindow) updateOffset() {
|
|
span := rw.span()
|
|
span := rw.span()
|
|
- if span > 0 {
|
|
|
|
- offset := rw.offset
|
|
|
|
- start := offset + 1
|
|
|
|
- steps := start + span
|
|
|
|
- var remainder int
|
|
|
|
- if steps > rw.size {
|
|
|
|
- remainder = steps - rw.size
|
|
|
|
- steps = rw.size
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // reset expired buckets
|
|
|
|
- for i := start; i < steps; i++ {
|
|
|
|
- rw.win.resetBucket(i)
|
|
|
|
- }
|
|
|
|
- for i := 0; i < remainder; i++ {
|
|
|
|
- rw.win.resetBucket(i)
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- rw.offset = (offset + span) % rw.size
|
|
|
|
- rw.lastTime = timex.Now()
|
|
|
|
|
|
+ if span <= 0 {
|
|
|
|
+ return
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ offset := rw.offset
|
|
|
|
+ start := offset + 1
|
|
|
|
+ steps := start + span
|
|
|
|
+ var remainder int
|
|
|
|
+ if steps > rw.size {
|
|
|
|
+ remainder = steps - rw.size
|
|
|
|
+ steps = rw.size
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // reset expired buckets
|
|
|
|
+ for i := start; i < steps; i++ {
|
|
|
|
+ rw.win.resetBucket(i)
|
|
|
|
+ }
|
|
|
|
+ for i := 0; i < remainder; i++ {
|
|
|
|
+ rw.win.resetBucket(i)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ rw.offset = (offset + span) % rw.size
|
|
|
|
+ rw.lastTime = timex.Now()
|
|
}
|
|
}
|
|
|
|
|
|
type Bucket struct {
|
|
type Bucket struct {
|