-
Notifications
You must be signed in to change notification settings - Fork 6
/
group_options.go
41 lines (34 loc) · 799 Bytes
/
group_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
package parallelizer
const (
defaultPoolSize = 10
defaultJobQueueSize = 100
)
// GroupOption an option for Groups
type GroupOption func(*GroupOptions)
// WithPoolSize sets pool size
func WithPoolSize(size int) GroupOption {
return func(options *GroupOptions) {
options.PoolSize = size
}
}
// WithJobQueueSize sets job size
func WithJobQueueSize(size int) GroupOption {
return func(options *GroupOptions) {
options.JobQueueSize = size
}
}
// GroupOptions configuration for the Group
type GroupOptions struct {
PoolSize int
JobQueueSize int
}
func newGroupOptions(options ...GroupOption) *GroupOptions {
config := &GroupOptions{
PoolSize: defaultPoolSize,
JobQueueSize: defaultJobQueueSize,
}
for _, option := range options {
option(config)
}
return config
}