Files
engine/common/ring.go

29 lines
480 B
Go

package common
import (
"m7s.live/engine/v4/util"
)
type RingBuffer[T any] struct {
*util.Ring[T] `json:"-"`
Size int
MoveCount uint32
LastValue *T
}
func (rb *RingBuffer[T]) Init(n int) *RingBuffer[T] {
if rb == nil {
rb = new(RingBuffer[T])
}
rb.Ring = util.NewRing[T](n)
rb.Size = n
rb.LastValue = &rb.Value
return rb
}
func (rb *RingBuffer[T]) MoveNext() *T {
rb.LastValue = &rb.Value
rb.Ring = rb.Next()
rb.MoveCount++
return &rb.Value
}