add congestion.Bandwidth

This commit is contained in:
Lucas Clemente
2016-04-28 10:33:58 +02:00
parent f16d30a20c
commit 2da6f1860e
2 changed files with 37 additions and 0 deletions

22
congestion/bandwidth.go Normal file
View File

@@ -0,0 +1,22 @@
package congestion
import "time"
// Bandwidth of a connection
type Bandwidth uint64
const (
// BitsPerSecond is 1 bit per second
BitsPerSecond Bandwidth = 1
// KBitsPerSecond is 1000 bits per second
KBitsPerSecond = 1000 * BitsPerSecond
// BytesPerSecond is 1 byte per second
BytesPerSecond = 8 * BitsPerSecond
// KBytesPerSecond is 1000 bytes per second
KBytesPerSecond = 1000 * BytesPerSecond
)
// BandwidthFromDelta calculates the bandwidth from a number of bytes and a time delta
func BandwidthFromDelta(bytes uint64, delta time.Duration) Bandwidth {
return Bandwidth(bytes) * Bandwidth(time.Second) / Bandwidth(delta) * BytesPerSecond
}

View File

@@ -0,0 +1,15 @@
package congestion_test
import (
"time"
"github.com/lucas-clemente/quic-go/congestion"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Bandwidth", func() {
It("converts from time delta", func() {
Expect(congestion.BandwidthFromDelta(1, time.Millisecond)).To(Equal(1000 * congestion.BytesPerSecond))
})
})