Documentation
¶
Index ¶
- func GetInitialPacketSize(addr net.Addr) congestion.ByteCount
- func MaxFilter[O constraints.Ordered](a, b O) int
- func MinFilter[O constraints.Ordered](a, b O) int
- func NewBbrSender(clock Clock, initialMaxDatagramSize congestion.ByteCount) *bbrSender
- type Bandwidth
- type Clock
- type DefaultClock
- type RingBuffer
- func (r *RingBuffer[T]) Back() *T
- func (r *RingBuffer[T]) Clear()
- func (r *RingBuffer[T]) Empty() bool
- func (r *RingBuffer[T]) Front() *T
- func (r *RingBuffer[T]) Init(size int)
- func (r *RingBuffer[T]) Len() int
- func (r *RingBuffer[T]) Offset(index int) *T
- func (r *RingBuffer[T]) PopFront() T
- func (r *RingBuffer[T]) PushBack(t T)
- type WindowedFilter
- func (f *WindowedFilter[V, T]) Clear()
- func (f *WindowedFilter[V, T]) GetBest() V
- func (f *WindowedFilter[V, T]) GetSecondBest() V
- func (f *WindowedFilter[V, T]) GetThirdBest() V
- func (f *WindowedFilter[V, T]) Reset(newSample V, newTime T)
- func (f *WindowedFilter[V, T]) SetWindowLength(windowLength T)
- func (f *WindowedFilter[V, T]) Update(newSample V, newTime T)
- type WindowedFilterTime
- type WindowedFilterValue
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetInitialPacketSize ¶
func GetInitialPacketSize(addr net.Addr) congestion.ByteCount
func MaxFilter ¶
func MaxFilter[O constraints.Ordered](a, b O) int
Compares two values and returns true if the first is greater than or equal to the second.
func MinFilter ¶
func MinFilter[O constraints.Ordered](a, b O) int
Compares two values and returns true if the first is less than or equal to the second.
func NewBbrSender ¶
func NewBbrSender( clock Clock, initialMaxDatagramSize congestion.ByteCount, ) *bbrSender
Types ¶
type Bandwidth ¶
type Bandwidth uint64
Bandwidth of a connection
const ( // BitsPerSecond is 1 bit per second BitsPerSecond Bandwidth = 1 // BytesPerSecond is 1 byte per second BytesPerSecond = 8 * BitsPerSecond )
func BandwidthFromDelta ¶
func BandwidthFromDelta(bytes congestion.ByteCount, delta time.Duration) Bandwidth
BandwidthFromDelta calculates the bandwidth from a number of bytes and a time delta
type DefaultClock ¶
type DefaultClock struct{}
DefaultClock implements the Clock interface using the Go stdlib clock.
type RingBuffer ¶
type RingBuffer[T any] struct { // contains filtered or unexported fields }
A RingBuffer is a ring buffer. It acts as a heap that doesn't cause any allocations.
func (*RingBuffer[T]) Back ¶
func (r *RingBuffer[T]) Back() *T
Back returns the back element. It must not be called when the buffer is empty, that means that callers might need to check if there are elements in the buffer first.
func (*RingBuffer[T]) Empty ¶
func (r *RingBuffer[T]) Empty() bool
Empty says if the ring buffer is empty.
func (*RingBuffer[T]) Front ¶
func (r *RingBuffer[T]) Front() *T
Front returns the front element. It must not be called when the buffer is empty, that means that callers might need to check if there are elements in the buffer first.
func (*RingBuffer[T]) Init ¶
func (r *RingBuffer[T]) Init(size int)
Init preallocs a buffer with a certain size.
func (*RingBuffer[T]) Len ¶
func (r *RingBuffer[T]) Len() int
Len returns the number of elements in the ring buffer.
func (*RingBuffer[T]) Offset ¶
func (r *RingBuffer[T]) Offset(index int) *T
Offset returns the offset element. It must not be called when the buffer is empty, that means that callers might need to check if there are elements in the buffer first and check if the index larger than buffer length.
func (*RingBuffer[T]) PopFront ¶
func (r *RingBuffer[T]) PopFront() T
PopFront returns the next element. It must not be called when the buffer is empty, that means that callers might need to check if there are elements in the buffer first.
func (*RingBuffer[T]) PushBack ¶
func (r *RingBuffer[T]) PushBack(t T)
PushBack adds a new element. If the ring buffer is full, its capacity is increased first.
type WindowedFilter ¶
type WindowedFilter[V WindowedFilterValue, T WindowedFilterTime] struct { // contains filtered or unexported fields }
func NewWindowedFilter ¶
func NewWindowedFilter[V WindowedFilterValue, T WindowedFilterTime](windowLength T, comparator func(V, V) int) *WindowedFilter[V, T]
func (*WindowedFilter[V, T]) Clear ¶
func (f *WindowedFilter[V, T]) Clear()
func (*WindowedFilter[V, T]) GetBest ¶
func (f *WindowedFilter[V, T]) GetBest() V
func (*WindowedFilter[V, T]) GetSecondBest ¶
func (f *WindowedFilter[V, T]) GetSecondBest() V
func (*WindowedFilter[V, T]) GetThirdBest ¶
func (f *WindowedFilter[V, T]) GetThirdBest() V
func (*WindowedFilter[V, T]) Reset ¶
func (f *WindowedFilter[V, T]) Reset(newSample V, newTime T)
Resets all estimates to new sample.
func (*WindowedFilter[V, T]) SetWindowLength ¶
func (f *WindowedFilter[V, T]) SetWindowLength(windowLength T)
Changes the window length. Does not update any current samples.
func (*WindowedFilter[V, T]) Update ¶
func (f *WindowedFilter[V, T]) Update(newSample V, newTime T)
Updates best estimates with |sample|, and expires and updates best estimates as necessary.
type WindowedFilterTime ¶
type WindowedFilterTime interface { constraints.Integer | constraints.Float }
type WindowedFilterValue ¶
type WindowedFilterValue interface { any }