-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptions.go
69 lines (56 loc) · 1.2 KB
/
options.go
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
60
61
62
63
64
65
66
67
68
69
package archer
import (
"time"
"github.com/dyaksa/archer/job"
)
type FnOptions func(j job.Job) job.Job
func WithMaxRetries(max int) FnOptions {
return func(j job.Job) job.Job {
j.MaxRetry = max
return j
}
}
func WithRetryInterval(interval time.Duration) FnOptions {
return func(j job.Job) job.Job {
j.RetryInterval = interval
return j
}
}
func WithScheduleTime(t time.Time) FnOptions {
return func(j job.Job) job.Job {
j.ScheduleAt = t
return j
}
}
type WorkerOptionFunc func(registerConfig) registerConfig
func WithTimeout(t time.Duration) WorkerOptionFunc {
return func(r registerConfig) registerConfig {
r.timeout = t
return r
}
}
func WithInstances(i int) WorkerOptionFunc {
return func(r registerConfig) registerConfig {
r.instances = i
return r
}
}
type ClientOptionFunc func(*Client) *Client
func WithSleepInterval(t time.Duration) ClientOptionFunc {
return func(c *Client) *Client {
c.sleepInterval = t
return c
}
}
func WithReaperInterval(t time.Duration) ClientOptionFunc {
return func(c *Client) *Client {
c.reaperInterval = t
return c
}
}
func WithErrHandler(fn func(error)) ClientOptionFunc {
return func(c *Client) *Client {
c.errHandler = fn
return c
}
}