55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
|
package audit
|
||
|
|
||
|
import "time"
|
||
|
|
||
|
const (
|
||
|
defaultEventStreamBufferSize = 100
|
||
|
defaultSinkBufferSize = 0
|
||
|
defaultSinkConsumptionTimeout = 50 * time.Millisecond
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
generatorIdx int64 = 1
|
||
|
WithBufferSize = func(bufferSize int) EventStreamOption {
|
||
|
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
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
|
||
|
type EventStreamOption func(cfg *eventStreamCfg)
|
||
|
|
||
|
type eventStreamCfg struct {
|
||
|
bufferSize int
|
||
|
sinkBuffersize int
|
||
|
generatorIndex int64
|
||
|
sinkConsumptionTimeout time.Duration
|
||
|
}
|
||
|
|
||
|
func newEventStreamCfg() eventStreamCfg {
|
||
|
cfg := eventStreamCfg{
|
||
|
generatorIndex: generatorIdx,
|
||
|
sinkBuffersize: defaultSinkBufferSize,
|
||
|
bufferSize: defaultEventStreamBufferSize,
|
||
|
sinkConsumptionTimeout: defaultSinkConsumptionTimeout,
|
||
|
}
|
||
|
generatorIdx++
|
||
|
|
||
|
return cfg
|
||
|
}
|