37 lines
539 B
Go
37 lines
539 B
Go
package rate
|
|
|
|
import "time"
|
|
|
|
type options struct {
|
|
fillInterval time.Duration
|
|
capacity int64
|
|
quantum int64
|
|
rate float64
|
|
}
|
|
|
|
type Option func(o *options)
|
|
|
|
func WithFillInterval(fi time.Duration) Option {
|
|
return func(o *options) {
|
|
o.fillInterval = fi
|
|
}
|
|
}
|
|
|
|
func WithCapacity(cap int64) Option {
|
|
return func(o *options) {
|
|
o.capacity = cap
|
|
}
|
|
}
|
|
|
|
func WithQuantum(qt int64) Option {
|
|
return func(o *options) {
|
|
o.quantum = qt
|
|
}
|
|
}
|
|
|
|
func WithRate(rate float64) Option {
|
|
return func(o *options) {
|
|
o.rate = rate
|
|
}
|
|
}
|