Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
24 changes: 13 additions & 11 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,15 +16,16 @@ 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
Telephony() telephonyobs.Reporter
Connector() any // any is a placeholder for the connector type
Egress() egressobs.Reporter
Ingress() ingressobs.Reporter
GatewayMetrics() any // any is a placeholder for the gateway metrics type
TelephonyCall() telephonycallobs.Reporter
Storage() storageobs.Reporter
Close()
Expand All @@ -33,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()
}
Expand All @@ -49,10 +57,6 @@ func (reporter) Telephony() telephonyobs.Reporter {
return telephonyobs.NewNoopReporter()
}

func (reporter) Connector() any {
return nil
}

func (reporter) Egress() egressobs.Reporter {
return egressobs.NewNoopReporter()
}
Expand All @@ -61,15 +65,13 @@ func (reporter) Ingress() ingressobs.Reporter {
return ingressobs.NewNoopReporter()
}

func (reporter) GatewayMetrics() any {
return nil
}

func (reporter) TelephonyCall() telephonycallobs.Reporter {
return telephonycallobs.NewNoopReporter()
}

func (reporter) Storage() storageobs.Reporter { return storageobs.NewNoopReporter() }
func (reporter) Storage() storageobs.Reporter {
return storageobs.NewNoopReporter()
}

func (reporter) Close() {
}
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