api/pkg/audit/options.go

69 lines
1.8 KiB
Go
Raw Normal View History

2020-12-30 16:03:01 +00:00
package audit
2021-01-04 16:52:21 +00:00
import (
"runtime"
"time"
)
2020-12-30 16:03:01 +00:00
const (
defaultEventStreamBufferSize = 100
defaultSinkBufferSize = 0
defaultSinkConsumptionTimeout = 50 * time.Millisecond
)
var (
2021-01-04 16:52:21 +00:00
generatorIdx int64 = 1
defaultDistributeParallelization = runtime.NumCPU() / 2
WithBufferSize = func(bufferSize int) EventStreamOption {
2020-12-30 16:03:01 +00:00
return func(cfg *eventStreamCfg) {
cfg.bufferSize = bufferSize
}
}
WithGeneratorIndex = func(generatorIndex int64) EventStreamOption {
return func(cfg *eventStreamCfg) {
cfg.generatorIndex = generatorIndex
}
}
WithSinkBufferSize = func(bufferSize int) EventStreamOption {
return func(cfg *eventStreamCfg) {
cfg.sinkBuffersize = bufferSize
}
}
WithSinkConsumptionTimeout = func(timeout time.Duration) EventStreamOption {
return func(cfg *eventStreamCfg) {
cfg.sinkConsumptionTimeout = timeout
}
}
2021-01-04 16:52:21 +00:00
WithDistributeParallelization = func(parallelization int) EventStreamOption {
return func(cfg *eventStreamCfg) {
if parallelization <= 0 || parallelization > runtime.NumCPU() {
return
}
cfg.distributeParallelization = parallelization
}
}
2020-12-30 16:03:01 +00:00
)
type EventStreamOption func(cfg *eventStreamCfg)
type eventStreamCfg struct {
2021-01-04 16:52:21 +00:00
bufferSize int
sinkBuffersize int
generatorIndex int64
distributeParallelization int
sinkConsumptionTimeout time.Duration
2020-12-30 16:03:01 +00:00
}
func newEventStreamCfg() eventStreamCfg {
cfg := eventStreamCfg{
2021-01-04 16:52:21 +00:00
generatorIndex: generatorIdx,
sinkBuffersize: defaultSinkBufferSize,
bufferSize: defaultEventStreamBufferSize,
sinkConsumptionTimeout: defaultSinkConsumptionTimeout,
distributeParallelization: defaultDistributeParallelization,
2020-12-30 16:03:01 +00:00
}
generatorIdx++
return cfg
}