bps/multi.go

40 lines
676 B
Go

package bps
import "time"
// Multi wraps multiple BPS
type Multi struct {
bs []*BPS
}
// NewMulti returns a populated Multi that has a BPS for each provided
// duration.
func NewMulti(durs ...time.Duration) (*Multi, error) {
bs := []*BPS{}
for _, d := range durs {
b, err := New(d)
if err != nil {
return nil, err
}
bs = append(bs, b)
}
r := &Multi{bs}
return r, nil
}
// Add adds i to each internal BPS.
func (mw *Multi) Add(i int64) {
for _, b := range mw.bs {
b.Add(i)
}
}
// Rate returns a slice of rates, one for each BPS.
func (mw *Multi) Rate() []float64 {
r := []float64{}
for _, b := range mw.bs {
r = append(r, b.Rate())
}
return r
}