From 323daff95b039dfe77e936b8a66ab99d5eb1c77b Mon Sep 17 00:00:00 2001 From: "Stephen McQuay (smcquay)" Date: Thu, 22 Sep 2016 23:03:32 -0700 Subject: [PATCH] added multi --- multi.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 multi.go diff --git a/multi.go b/multi.go new file mode 100644 index 0000000..5b05928 --- /dev/null +++ b/multi.go @@ -0,0 +1,39 @@ +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 +}