Skip to content
5 changes: 5 additions & 0 deletions .changeset/gold-fishes-smash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@livekit/protocol": patch
---

add stack utility
10 changes: 10 additions & 0 deletions observability/reporter.go
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -13,7 +16,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
Expand All @@ -33,6 +39,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()
}
Expand Down
3 changes: 2 additions & 1 deletion utils/closers.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package utils

import (
"io"
"slices"

"go.uber.org/multierr"
)
Expand All @@ -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())
}
Expand Down
25 changes: 25 additions & 0 deletions utils/stack/stack.go
Original file line number Diff line number Diff line change
@@ -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]
}
Loading