-
Notifications
You must be signed in to change notification settings - Fork 0
/
options.go
37 lines (29 loc) · 794 Bytes
/
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
package batch
import "time"
type Option[T any] interface {
apply(*Worker[T])
}
type optionFunc[T any] func(*Worker[T])
func (f optionFunc[T]) apply(worker *Worker[T]) {
f(worker)
}
func WithRetrys[T any](retrys int) Option[T] {
return optionFunc[T](func(worker *Worker[T]) {
worker.Retrys = retrys
})
}
func WithBatchTimeOut[T any](duration time.Duration) Option[T] {
return optionFunc[T](func(worker *Worker[T]) {
worker.batchTimeOut = duration
})
}
func WithGraceDwonDuration[T any](duration time.Duration) Option[T] {
return optionFunc[T](func(worker *Worker[T]) {
worker.graceDwonDuration = duration
})
}
func WithAutoCommitTimeOut[T any](duration time.Duration) Option[T] {
return optionFunc[T](func(worker *Worker[T]) {
worker.autoCommitDuration = duration
})
}