forked from quic-go/quic-go
add congestion.Bandwidth
This commit is contained in:
22
congestion/bandwidth.go
Normal file
22
congestion/bandwidth.go
Normal 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
|
||||
}
|
||||
15
congestion/bandwidth_test.go
Normal file
15
congestion/bandwidth_test.go
Normal 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))
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user