-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathoptions.go
More file actions
56 lines (48 loc) · 1.03 KB
/
options.go
File metadata and controls
56 lines (48 loc) · 1.03 KB
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
package sync
import "time"
// Options ...
type Options struct {
KeyPrefix string
LockTimeout time.Duration
WaitRetry time.Duration
RetryInterval time.Duration
}
// Option 为可选参数赋值的函数
type Option func(*Options)
// newOptions 创建可选参数
func newOptions(opts ...Option) *Options {
opt := &Options{
KeyPrefix: "synclock:",
LockTimeout: 20 * time.Second,
WaitRetry: 6 * time.Second,
RetryInterval: 100 * time.Millisecond,
}
for _, o := range opts {
o(opt)
}
return opt
}
// KeyPrefix ...
func KeyPrefix(keyPrefix string) Option {
return func(o *Options) {
o.KeyPrefix = keyPrefix
}
}
// LockTimeout ...
func LockTimeout(lockTimeout time.Duration) Option {
return func(o *Options) {
o.LockTimeout = lockTimeout
}
}
// WaitRetry ...
func WaitRetry(waitRetry time.Duration) Option {
return func(o *Options) {
o.WaitRetry = waitRetry
}
}
// RetryInterval ...
func RetryInterval(retryInterval time.Duration) Option {
return func(o *Options) {
o.RetryInterval = retryInterval
}
}