blob: dd8be5f6735fe3be09832dcab83b42ad367ec7b2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
package cache
import (
"hash/fnv"
"math"
"time"
)
type pauseTimer struct {
*time.Ticker
duration time.Duration
}
func newPauseTimer(d time.Duration) *pauseTimer {
ret := &pauseTimer{duration: d}
if d != 0 {
ret.Ticker = time.NewTicker(d)
} else {
ret.Ticker = time.NewTicker(math.MaxInt64)
ret.Reset(0)
}
return ret
}
func newPauseTimerStopped(d time.Duration) *pauseTimer {
ret := newPauseTimer(d)
ret.Stop()
return ret
}
func (t *pauseTimer) Reset(d time.Duration) {
t.duration = d
if t.duration == 0 {
t.Stop()
} else {
t.Ticker.Reset(d)
}
}
func (t *pauseTimer) Resume() {
t.Reset(t.GetDuration())
}
func (t *pauseTimer) GetDuration() time.Duration {
return t.duration
}
func zero[T any]() T {
var ret T
return ret
}
func hash(data []byte) uint64 {
hasher := fnv.New64()
if _, err := hasher.Write(data); err != nil {
panic(err)
}
return hasher.Sum64()
}
|