diff --git a/.changeset/gold-fishes-smash.md b/.changeset/gold-fishes-smash.md new file mode 100644 index 000000000..bfcb43869 --- /dev/null +++ b/.changeset/gold-fishes-smash.md @@ -0,0 +1,5 @@ +--- +"@livekit/protocol": patch +--- + +add stack utility diff --git a/observability/reporter.go b/observability/reporter.go index 47c37829e..badb1522f 100644 --- a/observability/reporter.go +++ b/observability/reporter.go @@ -1,6 +1,9 @@ package observability import ( + "github.com/go-logr/logr" + + "github.com/livekit/protocol/logger" "github.com/livekit/protocol/observability/agentsobs" "github.com/livekit/protocol/observability/egressobs" "github.com/livekit/protocol/observability/gatewayobs" @@ -12,7 +15,10 @@ import ( const Project = "livekit" +var discardLogger = logger.LogRLogger(logr.Discard()) + type Reporter interface { + Logger(projectID string) (logger.Logger, error) Room() roomobs.Reporter Agent() agentsobs.Reporter Gateway() gatewayobs.Reporter @@ -31,6 +37,10 @@ func NewReporter() Reporter { type reporter struct{} +func (reporter) Logger(projectID string) (logger.Logger, error) { + return discardLogger, nil +} + func (reporter) Room() roomobs.Reporter { return roomobs.NewNoopReporter() } diff --git a/utils/closers.go b/utils/closers.go index b95f544ca..0c855fb0f 100644 --- a/utils/closers.go +++ b/utils/closers.go @@ -16,6 +16,7 @@ package utils import ( "io" + "slices" "go.uber.org/multierr" ) @@ -28,7 +29,7 @@ func CombineClosers(cs ...io.Closer) Closers { func (s *Closers) Close() error { var err error - for _, c := range *s { + for _, c := range slices.Backward(*s) { if c != nil { err = multierr.Append(err, c.Close()) } diff --git a/utils/stack/stack.go b/utils/stack/stack.go new file mode 100644 index 000000000..152342434 --- /dev/null +++ b/utils/stack/stack.go @@ -0,0 +1,25 @@ +package stack + +type Stack[T any] []T + +func (s Stack[T]) Empty() bool { + return len(s) == 0 +} + +func (s *Stack[T]) Reset() { + *s = (*s)[:0] +} + +func (s *Stack[T]) Push(v T) { + *s = append(*s, v) +} + +func (s *Stack[T]) Pop() T { + v := (*s)[len(*s)-1] + *s = (*s)[:len(*s)-1] + return v +} + +func (s Stack[T]) Peek() T { + return s[len(s)-1] +}