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 }