Documentation
¶
Overview ¶
Copyright (c) 2016,2020 Uber Technologies, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SOURCE: https://github.com/uber-go/ratelimit/blob/main/limiter_mutexbased.go EDIT: slight modification to allow setting rate limit on the fly SCOPE: LeakyBucket
Index ¶
- Constants
- Variables
- func AggregateRTPStats(statsList []*livekit.RTPStats, gapHistogramSize int) *livekit.RTPStats
- func EnableLockTracker()
- func GetMimeTypeForAudioCodec(codec livekit.AudioCodec) string
- func GetMimeTypeForVideoCodec(codec livekit.VideoCodec) string
- func HashedID(id string) string
- func HedgeCall[T any](ctx context.Context, params HedgeParams[T]) (v T, err error)
- func IsConnectionQualityLower(prev livekit.ConnectionQuality, curr livekit.ConnectionQuality) bool
- func Least[T Numeric](less func(a, b T) bool, vs ...T) T
- func LocalNodeID() (string, error)
- func MarshalGuid[T livekit.Guid](id T) livekit.GuidBlock
- func Max[T Numeric](vs ...T) T
- func Min[T Numeric](vs ...T) T
- func Most[T Numeric](less func(a, b T) bool, vs ...T) T
- func Must[T any](v T, err error) T
- func NewGuid(prefix string) string
- func NumMutexes() int
- func ParallelExec[T any](vals []T, parallelThreshold, step uint64, fn func(T))
- func RandomSecret() string
- func Redact(s, name string) string
- func RedactIdentifier(identifier string) string
- func RedactStreamKey(url string) (string, bool)
- func ToggleLockTrackerStackTraces(enable bool)
- func UnmarshalGuid[T livekit.Guid](b livekit.GuidBlock) T
- type Bitmap
- type Clock
- type ConfigBuilder
- type ConfigDefaulter
- type ConfigObserver
- type DedupedSlice
- type ErrArray
- type EventEmitter
- type EventEmitterParams
- type EventObserver
- type EventObserverList
- type FlowGraph
- type Graph
- func (g *Graph[K, N, E]) DeleteEdge(src, dst K)
- func (g *Graph[K, N, E]) DeleteNode(id K)
- func (g *Graph[K, N, E]) Edge(src, dst K) (p E)
- func (g *Graph[K, N, E]) HasEdge(src, dst K) bool
- func (g *Graph[K, N, E]) HasNode(id K) bool
- func (g *Graph[K, N, E]) InEdges(dst K) map[K]E
- func (g *Graph[K, N, E]) InsertEdge(src, dst K, props E)
- func (g *Graph[K, N, E]) InsertNode(props N)
- func (g *Graph[K, N, E]) Node(id K) (props N)
- func (g *Graph[K, N, E]) NodeIDs() []K
- func (g *Graph[K, N, E]) OutEdges(src K) map[K]E
- func (g *Graph[K, N, E]) ShortestPath(src, dst K) ([]N, int64)
- func (g *Graph[K, N, E]) Size() int
- func (g *Graph[K, N, E]) TopologicalSort() []N
- type GraphEdge
- type GraphEdgeProps
- type GraphNode
- type GraphNodeProps
- type HedgeParams
- type KillableService
- type LatencyAggregate
- func (a *LatencyAggregate) Get(ts time.Duration) (Welford, bool)
- func (a *LatencyAggregate) MarshalLogObject(e zapcore.ObjectEncoder) error
- func (a *LatencyAggregate) Summarize() Welford
- func (a *LatencyAggregate) SummarizeLast(d time.Duration) Welford
- func (a *LatencyAggregate) Update(ts time.Duration, v float64)
- type LeakyBucket
- type MessageBus
- type MinCostMaxFlow
- type MultitonService
- type Mutex
- type Numeric
- type Promise
- type ProtoProxy
- type PubSub
- type RWMutex
- type RedisMessageBus
- func (r *RedisMessageBus) Lock(ctx context.Context, key string, expiration time.Duration) (bool, error)
- func (r *RedisMessageBus) Publish(ctx context.Context, channel string, msg proto.Message) error
- func (r *RedisMessageBus) Subscribe(ctx context.Context, channel string) (PubSub, error)
- func (r *RedisMessageBus) SubscribeQueue(ctx context.Context, channel string) (PubSub, error)
- type RedisPubSub
- type SimpleGraphEdge
- type SimulatedClock
- type StuckLock
- type SystemClock
- type TimedAggregator
- func (t *TimedAggregator[T]) AddSample(val T) error
- func (t *TimedAggregator[T]) AddSampleAt(val T, at time.Time) error
- func (t *TimedAggregator[T]) GetAggregate() (T, time.Duration)
- func (t *TimedAggregator[T]) GetAggregateAndRestartAt(at time.Time) (T, time.Duration, error)
- func (t *TimedAggregator[T]) GetAggregateAt(at time.Time) (T, time.Duration, error)
- func (t *TimedAggregator[T]) GetAverage() float64
- func (t *TimedAggregator[T]) GetAverageAndRestartAt(at time.Time) (float64, error)
- func (t *TimedAggregator[T]) GetAverageAt(at time.Time) (float64, error)
- func (t *TimedAggregator[T]) Reset()
- func (t *TimedAggregator[T]) Restart()
- func (t *TimedAggregator[T]) RestartAt(at time.Time)
- type TimedAggregatorParams
- type TimedVersion
- func (t TimedVersion) After(other TimedVersion) bool
- func (t TimedVersion) Compare(other TimedVersion) int
- func (t *TimedVersion) Downgrade(other TimedVersion) bool
- func (t TimedVersion) GormDataType() string
- func (t TimedVersion) IsZero() bool
- func (t TimedVersion) Load() TimedVersion
- func (t *TimedVersion) Scan(src interface{}) (err error)
- func (t *TimedVersion) Store(other TimedVersion)
- func (t TimedVersion) String() string
- func (t TimedVersion) Time() time.Time
- func (t TimedVersion) ToProto() *livekit.TimedVersion
- func (t *TimedVersion) Update(other TimedVersion) bool
- func (t *TimedVersion) Upgrade(other TimedVersion) bool
- func (t TimedVersion) Value() (driver.Value, error)
- type TimedVersionGenerator
- type TimeoutQueue
- type TimeoutQueueItem
- type TimeoutQueueIterator
- type Welford
- type WorkerGroup
Constants ¶
const ( RoomPrefix = "RM_" NodePrefix = "ND_" ParticipantPrefix = "PA_" TrackPrefix = "TR_" APIKeyPrefix = "API" EgressPrefix = "EG_" IngressPrefix = "IN_" SIPTrunkPrefix = "ST_" SIPDispatchRulePrefix = "SDR_" SIPCallPrefix = "SCL_" RPCPrefix = "RPC_" WHIPResourcePrefix = "WH_" RTMPResourcePrefix = "RT_" URLResourcePrefix = "UR_" AgentWorkerPrefix = "AW_" AgentJobPrefix = "AJ_" )
const (
GuidSize = 12
)
Variables ¶
var (
ErrAnachronousSample = errors.New("anachronous sample")
)
var ( PromMessageBusCounter = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: "livekit", Subsystem: "messagebus", Name: "messages", }, []string{"type", "status"}, ) )
Functions ¶
func AggregateRTPStats ¶ added in v1.9.2
func EnableLockTracker ¶ added in v1.4.0
func EnableLockTracker()
EnableLockTracker enable lock tracking background worker. This should be called during init
func GetMimeTypeForAudioCodec ¶ added in v1.5.1
func GetMimeTypeForAudioCodec(codec livekit.AudioCodec) string
func GetMimeTypeForVideoCodec ¶ added in v1.5.1
func GetMimeTypeForVideoCodec(codec livekit.VideoCodec) string
func HedgeCall ¶ added in v1.14.0
func HedgeCall[T any](ctx context.Context, params HedgeParams[T]) (v T, err error)
race retries if the function takes too long to return |---------------- attempt 1 ----------------| | delay |--------- attempt 2 ---------|
func IsConnectionQualityLower ¶ added in v1.9.2
func IsConnectionQualityLower(prev livekit.ConnectionQuality, curr livekit.ConnectionQuality) bool
func LocalNodeID ¶ added in v0.11.1
func NumMutexes ¶ added in v1.4.0
func NumMutexes() int
func ParallelExec ¶ added in v1.4.3
ParallelExec will executes the given function with each element of vals, if len(vals) >= parallelThreshold, will execute them in parallel, with the given step size. So fn must be thread-safe.
func RandomSecret ¶
func RandomSecret() string
func RedactIdentifier ¶ added in v1.5.10
func RedactStreamKey ¶ added in v1.5.10
func ToggleLockTrackerStackTraces ¶ added in v1.8.0
func ToggleLockTrackerStackTraces(enable bool)
Types ¶
type Bitmap ¶ added in v1.8.0
type Bitmap[T bitmapNumber] struct {
// contains filtered or unexported fields
}
func (*Bitmap[T]) ClearRange ¶ added in v1.8.0
func (b *Bitmap[T]) ClearRange(min, max T)
type ConfigBuilder ¶ added in v1.12.0
type ConfigDefaulter ¶ added in v1.12.0
type ConfigObserver ¶ added in v1.12.0
type ConfigObserver[T any] struct { // contains filtered or unexported fields }
func NewConfigObserver ¶ added in v1.12.0
func NewConfigObserver[T any](path string, builder ConfigBuilder[T]) (*ConfigObserver[T], *T, error)
func (*ConfigObserver[T]) Close ¶ added in v1.12.0
func (c *ConfigObserver[T]) Close()
func (*ConfigObserver[T]) EmitConfigUpdate ¶ added in v1.12.0
func (c *ConfigObserver[T]) EmitConfigUpdate(conf *T)
func (*ConfigObserver[T]) Observe ¶ added in v1.12.0
func (c *ConfigObserver[T]) Observe(cb func(*T)) func()
type DedupedSlice ¶ added in v1.6.0
type DedupedSlice[T comparable] struct { // contains filtered or unexported fields }
func NewDedupedSlice ¶ added in v1.6.0
func NewDedupedSlice[T comparable](maxLen int) *DedupedSlice[T]
func (*DedupedSlice[T]) Add ¶ added in v1.6.0
func (d *DedupedSlice[T]) Add(val T) bool
func (*DedupedSlice[T]) Clear ¶ added in v1.6.0
func (d *DedupedSlice[T]) Clear()
func (*DedupedSlice[T]) Get ¶ added in v1.6.0
func (d *DedupedSlice[T]) Get() []T
func (*DedupedSlice[T]) Has ¶ added in v1.6.0
func (d *DedupedSlice[T]) Has(val T) bool
func (*DedupedSlice[T]) Len ¶ added in v1.6.0
func (d *DedupedSlice[T]) Len() int
type EventEmitter ¶ added in v1.5.7
type EventEmitter[K comparable, V any] struct { // contains filtered or unexported fields }
func NewDefaultEventEmitter ¶ added in v1.5.7
func NewDefaultEventEmitter[K comparable, V any]() *EventEmitter[K, V]
func NewEventEmitter ¶ added in v1.5.7
func NewEventEmitter[K comparable, V any](params EventEmitterParams) *EventEmitter[K, V]
func (*EventEmitter[K, V]) Emit ¶ added in v1.5.7
func (e *EventEmitter[K, V]) Emit(k K, v V)
func (*EventEmitter[K, V]) Observe ¶ added in v1.5.7
func (e *EventEmitter[K, V]) Observe(k K) *EventObserver[V]
func (*EventEmitter[K, V]) ObservedKeys ¶ added in v1.5.7
func (e *EventEmitter[K, V]) ObservedKeys() []K
type EventEmitterParams ¶ added in v1.5.7
func DefaultEventEmitterParams ¶ added in v1.5.8
func DefaultEventEmitterParams() EventEmitterParams
type EventObserver ¶ added in v1.5.7
type EventObserver[V any] struct { // contains filtered or unexported fields }
func NewEventObserver ¶ added in v1.5.7
func NewEventObserver[V any](stopFunc func()) (*EventObserver[V], func(v V))
func (*EventObserver[V]) Events ¶ added in v1.5.7
func (o *EventObserver[V]) Events() <-chan V
func (*EventObserver[V]) Stop ¶ added in v1.5.7
func (o *EventObserver[V]) Stop()
type EventObserverList ¶ added in v1.5.8
type EventObserverList[V any] struct { // contains filtered or unexported fields }
func NewDefaultEventObserverList ¶ added in v1.5.8
func NewDefaultEventObserverList[V any]() *EventObserverList[V]
func NewEventObserverList ¶ added in v1.5.8
func NewEventObserverList[V any](params EventEmitterParams) *EventObserverList[V]
func (*EventObserverList[V]) Emit ¶ added in v1.5.8
func (l *EventObserverList[V]) Emit(v V)
func (*EventObserverList[V]) Len ¶ added in v1.5.8
func (l *EventObserverList[V]) Len() int
func (*EventObserverList[V]) Observe ¶ added in v1.5.8
func (l *EventObserverList[V]) Observe() *EventObserver[V]
type FlowGraph ¶ added in v1.5.7
type FlowGraph struct {
// contains filtered or unexported fields
}
func NewFlowGraph ¶ added in v1.5.7
type Graph ¶ added in v1.5.7
type Graph[K comparable, N GraphNodeProps[K], E GraphEdgeProps] struct { // contains filtered or unexported fields }
func NewGraph ¶ added in v1.5.7
func NewGraph[K comparable, N GraphNodeProps[K], E GraphEdgeProps]() *Graph[K, N, E]
func (*Graph[K, N, E]) DeleteEdge ¶ added in v1.5.7
func (g *Graph[K, N, E]) DeleteEdge(src, dst K)
func (*Graph[K, N, E]) DeleteNode ¶ added in v1.5.8
func (g *Graph[K, N, E]) DeleteNode(id K)
func (*Graph[K, N, E]) InsertEdge ¶ added in v1.5.7
func (g *Graph[K, N, E]) InsertEdge(src, dst K, props E)
func (*Graph[K, N, E]) InsertNode ¶ added in v1.5.7
func (g *Graph[K, N, E]) InsertNode(props N)
func (*Graph[K, N, E]) ShortestPath ¶ added in v1.5.7
func (*Graph[K, N, E]) TopologicalSort ¶ added in v1.5.7
func (g *Graph[K, N, E]) TopologicalSort() []N
type GraphEdge ¶ added in v1.5.7
type GraphEdge[N, E any] struct { // contains filtered or unexported fields }
type GraphEdgeProps ¶ added in v1.5.7
type GraphEdgeProps interface {
Length() int64
}
type GraphNode ¶ added in v1.5.7
type GraphNode[T any] struct { // contains filtered or unexported fields }
type GraphNodeProps ¶ added in v1.5.7
type GraphNodeProps[K comparable] interface { ID() K }
type HedgeParams ¶ added in v1.14.0
type KillableService ¶ added in v1.9.0
type KillableService interface {
Kill()
}
type LatencyAggregate ¶ added in v1.17.0
type LatencyAggregate struct {
// contains filtered or unexported fields
}
a ring buffer of welford mean/var summaries used to aggregate jitter and rtt.
func NewLatencyAggregate ¶ added in v1.17.0
func NewLatencyAggregate(interval, windowLength time.Duration) *LatencyAggregate
func (*LatencyAggregate) Get ¶ added in v1.17.0
func (a *LatencyAggregate) Get(ts time.Duration) (Welford, bool)
func (*LatencyAggregate) MarshalLogObject ¶ added in v1.17.0
func (a *LatencyAggregate) MarshalLogObject(e zapcore.ObjectEncoder) error
func (*LatencyAggregate) Summarize ¶ added in v1.17.0
func (a *LatencyAggregate) Summarize() Welford
aggregate the interval summaries
func (*LatencyAggregate) SummarizeLast ¶ added in v1.17.0
func (a *LatencyAggregate) SummarizeLast(d time.Duration) Welford
type LeakyBucket ¶ added in v1.14.0
type LeakyBucket struct {
// contains filtered or unexported fields
}
func NewLeakyBucket ¶ added in v1.14.0
func NewLeakyBucket(rateLimit int, slack int, clock Clock) *LeakyBucket
NewLeakyBucket initiates LeakyBucket with rateLimit, slack, and clock.
rateLimit is defined as the number of request per second.
slack is defined as the number of allowed requests before limiting. e.g. when slack=5, LeakyBucket will allow 5 requests to pass through Take without a sleep as long as these requests are under perRequest duration.
func (*LeakyBucket) Take ¶ added in v1.14.0
func (lb *LeakyBucket) Take() time.Time
Take blocks to ensure that the time spent between multiple Take calls is on average time.Second/rate.
Take is THREAD SAFE and BLOCKING.
func (*LeakyBucket) Update ¶ added in v1.14.0
func (lb *LeakyBucket) Update(rateLimit int, slack int)
Update sets the underlying rate limit and slack. The setting may not be applied immediately.
Update is THREAD SAFE and NON-BLOCKING.
type MessageBus ¶ added in v0.8.4
type MessageBus interface { Subscribe(ctx context.Context, channel string) (PubSub, error) // SubscribeQueue is like subscribe, but ensuring only a single instance gets to process the message SubscribeQueue(ctx context.Context, channel string) (PubSub, error) Publish(ctx context.Context, channel string, msg proto.Message) error }
func NewRedisMessageBus ¶ added in v0.8.4
func NewRedisMessageBus(rc redis.UniversalClient) MessageBus
type MinCostMaxFlow ¶ added in v1.5.7
type MinCostMaxFlow struct {
// contains filtered or unexported fields
}
func (*MinCostMaxFlow) ComputeMaxFlow ¶ added in v1.5.7
func (f *MinCostMaxFlow) ComputeMaxFlow(g FlowGraph, s, t int64) (flow, cost int64)
func (*MinCostMaxFlow) Flow ¶ added in v1.5.7
func (f *MinCostMaxFlow) Flow(s, t int64) int64
type MultitonService ¶ added in v1.9.0
type MultitonService[K comparable] struct { // contains filtered or unexported fields }
func (*MultitonService[K]) Kill ¶ added in v1.9.0
func (s *MultitonService[K]) Kill()
func (*MultitonService[K]) Replace ¶ added in v1.9.0
func (s *MultitonService[K]) Replace(k K, v KillableService) func()
type Numeric ¶ added in v1.5.9
type Numeric interface { constraints.Signed | constraints.Unsigned | time.Duration }
type Promise ¶ added in v1.14.0
func NewPromise ¶ added in v1.14.0
func NewResolvedPromise ¶ added in v1.14.0
type ProtoProxy ¶ added in v1.5.5
ProtoProxy is a caching proxy for protobuf messages that may be expensive to compute. It is used to avoid unnecessary re-generation of Protobufs
func NewProtoProxy ¶ added in v1.5.5
func NewProtoProxy[T proto.Message](refreshInterval time.Duration, updateFn func() T) *ProtoProxy[T]
NewProtoProxy creates a new ProtoProxy that regenerates underlying values at a cadence of refreshInterval this should be used for updates that should be sent periodically, but does not have the urgency of immediate delivery updateFn should provide computations required to generate the protobuf if refreshInterval is 0, then proxy will only update on MarkDirty(true)
func (*ProtoProxy[T]) Get ¶ added in v1.5.5
func (p *ProtoProxy[T]) Get() T
func (*ProtoProxy[T]) MarkDirty ¶ added in v1.5.5
func (p *ProtoProxy[T]) MarkDirty(immediate bool) <-chan struct{}
func (*ProtoProxy[T]) Stop ¶ added in v1.5.5
func (p *ProtoProxy[T]) Stop()
func (*ProtoProxy[T]) Updated ¶ added in v1.5.5
func (p *ProtoProxy[T]) Updated() <-chan struct{}
type RedisMessageBus ¶ added in v0.8.4
type RedisMessageBus struct {
// contains filtered or unexported fields
}
func (*RedisMessageBus) SubscribeQueue ¶ added in v0.9.3
type RedisPubSub ¶ added in v0.8.4
type RedisPubSub struct {
// contains filtered or unexported fields
}
func (*RedisPubSub) Channel ¶ added in v0.8.4
func (r *RedisPubSub) Channel() <-chan interface{}
func (*RedisPubSub) Close ¶ added in v0.8.4
func (r *RedisPubSub) Close() error
func (*RedisPubSub) Payload ¶ added in v0.8.4
func (r *RedisPubSub) Payload(msg interface{}) []byte
type SimpleGraphEdge ¶ added in v1.7.0
type SimpleGraphEdge struct{}
func (SimpleGraphEdge) Length ¶ added in v1.7.0
func (e SimpleGraphEdge) Length() int64
type SimulatedClock ¶ added in v1.14.0
type StuckLock ¶ added in v1.5.7
type StuckLock struct {
// contains filtered or unexported fields
}
func ScanTrackedLocks ¶ added in v1.4.0
ScanTrackedLocks check all lock trackers
func ScanTrackedLocksI ¶ added in v1.4.0
ScanTrackedLocksI check lock trackers incrementally n at a time
func (*StuckLock) FirstLockedAtStack ¶ added in v1.5.7
func (*StuckLock) NumGoroutineHeld ¶ added in v1.5.7
func (*StuckLock) NumGoroutineWaiting ¶ added in v1.5.7
type SystemClock ¶ added in v1.14.0
type SystemClock struct{}
func (SystemClock) Now ¶ added in v1.14.0
func (SystemClock) Now() time.Time
func (SystemClock) Sleep ¶ added in v1.14.0
func (SystemClock) Sleep(d time.Duration)
type TimedAggregator ¶ added in v1.5.9
type TimedAggregator[T timedAggregatorNumber] struct {
// contains filtered or unexported fields
}
func NewTimedAggregator ¶ added in v1.5.9
func NewTimedAggregator[T timedAggregatorNumber](params TimedAggregatorParams) *TimedAggregator[T]
func (*TimedAggregator[T]) AddSample ¶ added in v1.5.9
func (t *TimedAggregator[T]) AddSample(val T) error
func (*TimedAggregator[T]) AddSampleAt ¶ added in v1.5.9
func (t *TimedAggregator[T]) AddSampleAt(val T, at time.Time) error
func (*TimedAggregator[T]) GetAggregate ¶ added in v1.5.9
func (t *TimedAggregator[T]) GetAggregate() (T, time.Duration)
func (*TimedAggregator[T]) GetAggregateAndRestartAt ¶ added in v1.5.9
func (*TimedAggregator[T]) GetAggregateAt ¶ added in v1.5.9
func (*TimedAggregator[T]) GetAverage ¶ added in v1.5.9
func (t *TimedAggregator[T]) GetAverage() float64
func (*TimedAggregator[T]) GetAverageAndRestartAt ¶ added in v1.5.9
func (t *TimedAggregator[T]) GetAverageAndRestartAt(at time.Time) (float64, error)
func (*TimedAggregator[T]) GetAverageAt ¶ added in v1.5.9
func (t *TimedAggregator[T]) GetAverageAt(at time.Time) (float64, error)
func (*TimedAggregator[T]) Reset ¶ added in v1.5.9
func (t *TimedAggregator[T]) Reset()
func (*TimedAggregator[T]) Restart ¶ added in v1.5.9
func (t *TimedAggregator[T]) Restart()
func (*TimedAggregator[T]) RestartAt ¶ added in v1.5.9
func (t *TimedAggregator[T]) RestartAt(at time.Time)
type TimedAggregatorParams ¶ added in v1.5.9
type TimedAggregatorParams struct {
CapNegativeValues bool
}
type TimedVersion ¶ added in v1.4.3
type TimedVersion uint64
func TimedVersionFromProto ¶ added in v1.4.3
func TimedVersionFromProto(proto *livekit.TimedVersion) TimedVersion
func TimedVersionFromTime ¶ added in v1.4.3
func TimedVersionFromTime(t time.Time) TimedVersion
func (TimedVersion) After ¶ added in v1.4.3
func (t TimedVersion) After(other TimedVersion) bool
func (TimedVersion) Compare ¶ added in v1.4.3
func (t TimedVersion) Compare(other TimedVersion) int
func (*TimedVersion) Downgrade ¶ added in v1.9.4
func (t *TimedVersion) Downgrade(other TimedVersion) bool
func (TimedVersion) GormDataType ¶ added in v1.10.0
func (t TimedVersion) GormDataType() string
func (TimedVersion) IsZero ¶ added in v1.5.5
func (t TimedVersion) IsZero() bool
func (TimedVersion) Load ¶ added in v1.4.3
func (t TimedVersion) Load() TimedVersion
func (*TimedVersion) Scan ¶ added in v1.9.4
func (t *TimedVersion) Scan(src interface{}) (err error)
func (*TimedVersion) Store ¶ added in v1.4.3
func (t *TimedVersion) Store(other TimedVersion)
func (TimedVersion) String ¶ added in v1.4.3
func (t TimedVersion) String() string
func (TimedVersion) Time ¶ added in v1.4.3
func (t TimedVersion) Time() time.Time
func (TimedVersion) ToProto ¶ added in v1.4.3
func (t TimedVersion) ToProto() *livekit.TimedVersion
func (*TimedVersion) Update ¶ added in v1.4.3
func (t *TimedVersion) Update(other TimedVersion) bool
func (*TimedVersion) Upgrade ¶ added in v1.9.4
func (t *TimedVersion) Upgrade(other TimedVersion) bool
type TimedVersionGenerator ¶ added in v1.4.3
type TimedVersionGenerator interface {
Next() TimedVersion
}
func NewDefaultTimedVersionGenerator ¶ added in v1.4.3
func NewDefaultTimedVersionGenerator() TimedVersionGenerator
type TimeoutQueue ¶ added in v1.6.0
type TimeoutQueue[T any] struct { // contains filtered or unexported fields }
func (*TimeoutQueue[T]) IterateAfter ¶ added in v1.6.0
func (q *TimeoutQueue[T]) IterateAfter(timeout time.Duration) TimeoutQueueIterator[T]
func (*TimeoutQueue[T]) IterateRemoveAfter ¶ added in v1.6.0
func (q *TimeoutQueue[T]) IterateRemoveAfter(timeout time.Duration) TimeoutQueueIterator[T]
func (*TimeoutQueue[T]) Remove ¶ added in v1.6.0
func (q *TimeoutQueue[T]) Remove(i *TimeoutQueueItem[T])
func (*TimeoutQueue[T]) Reset ¶ added in v1.6.0
func (q *TimeoutQueue[T]) Reset(i *TimeoutQueueItem[T]) bool
type TimeoutQueueItem ¶ added in v1.6.0
type TimeoutQueueItem[T any] struct { Value T // contains filtered or unexported fields }
type TimeoutQueueIterator ¶ added in v1.17.0
type TimeoutQueueIterator[T any] struct { // contains filtered or unexported fields }
func (*TimeoutQueueIterator[T]) Item ¶ added in v1.17.0
func (i *TimeoutQueueIterator[T]) Item() *TimeoutQueueItem[T]
func (*TimeoutQueueIterator[T]) Next ¶ added in v1.17.0
func (i *TimeoutQueueIterator[T]) Next() bool
type Welford ¶ added in v1.5.9
type Welford struct {
// contains filtered or unexported fields
}
Welford implements Welford's online algorithm for variance SEE: https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Welford's_online_algorithm
func WelfordMerge ¶ added in v1.5.9
type WorkerGroup ¶ added in v1.5.2
type WorkerGroup struct {
// contains filtered or unexported fields
}
func (*WorkerGroup) Go ¶ added in v1.5.2
func (w *WorkerGroup) Go(fn func())
func (*WorkerGroup) Wait ¶ added in v1.5.2
func (w *WorkerGroup) Wait()
Source Files
¶
- bitmap.go
- clock.go
- codec.go
- configobserver.go
- connectionquality.go
- dedupedslice.go
- err_array.go
- event_emitter.go
- graph.go
- hedge.go
- id.go
- latencyaggregate.go
- lock_tracker.go
- math.go
- messaging.go
- multitonservice.go
- must.go
- parallel.go
- promise.go
- protoproxy.go
- rate.go
- redact.go
- rtpstats.go
- secret.go
- timed_aggregator.go
- timed_version.go
- timeoutqueue.go
- welford.go
- workergroup.go