Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use slog in a backward compatible way #442

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
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
57 changes: 33 additions & 24 deletions engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package lksdk

import (
"log/slog"
"sync"
"time"

Expand All @@ -36,6 +37,7 @@ const (
)

type RTCEngine struct {
log *slog.Logger
pclock sync.Mutex
publisher *PCTransport
subscriber *PCTransport
Expand Down Expand Up @@ -76,6 +78,7 @@ type RTCEngine struct {

func NewRTCEngine() *RTCEngine {
e := &RTCEngine{
log: getLogger(),
client: NewSignalClient(),
trackPublishedChan: make(chan *livekit.TrackPublishedResponse, 1),
JoinTimeout: 15 * time.Second,
Expand Down Expand Up @@ -111,6 +114,10 @@ func NewRTCEngine() *RTCEngine {
return e
}

func (e *RTCEngine) SetLogger(log *slog.Logger) {
e.log = log
}

func (e *RTCEngine) Join(url string, token string, params *connectParams) (*livekit.JoinResponse, error) {
res, err := e.client.Join(url, token, *params)
if err != nil {
Expand Down Expand Up @@ -229,6 +236,7 @@ func (e *RTCEngine) configure(

var err error
if e.publisher, err = NewPCTransport(PCTransportParams{
Logger: e.log,
Configuration: configuration,
RetransmitBufferSize: e.connParams.RetransmitBufferSize,
Pacer: e.connParams.Pacer,
Expand All @@ -239,12 +247,13 @@ func (e *RTCEngine) configure(
return err
}
if e.subscriber, err = NewPCTransport(PCTransportParams{
Logger: e.log,
Configuration: configuration,
RetransmitBufferSize: e.connParams.RetransmitBufferSize,
}); err != nil {
return err
}
logger.Debugw("Using ICE servers", "servers", iceServers)
e.log.Debug("Using ICE servers", "servers", iceServers)

if subscriberPrimary != nil {
e.subscriberPrimary = *subscriberPrimary
Expand All @@ -257,12 +266,12 @@ func (e *RTCEngine) configure(
return
}
init := candidate.ToJSON()
logger.Debugw("local ICE candidate",
e.log.Debug("local ICE candidate",
"target", livekit.SignalTarget_PUBLISHER,
"candidate", init.Candidate,
)
if err := e.client.SendICECandidate(init, livekit.SignalTarget_PUBLISHER); err != nil {
logger.Errorw("could not send ICE candidates for publisher", err)
e.log.Error("could not send ICE candidates for publisher", "error", err)
}

})
Expand All @@ -272,12 +281,12 @@ func (e *RTCEngine) configure(
return
}
init := candidate.ToJSON()
logger.Debugw("local ICE candidate",
e.log.Debug("local ICE candidate",
"target", livekit.SignalTarget_SUBSCRIBER,
"candidate", init.Candidate,
)
if err := e.client.SendICECandidate(init, livekit.SignalTarget_SUBSCRIBER); err != nil {
logger.Errorw("could not send ICE candidates for subscriber", err)
e.log.Error("could not send ICE candidates for subscriber", "error", err)
}
})

Expand All @@ -288,15 +297,15 @@ func (e *RTCEngine) configure(
primaryTransport.pc.OnICEConnectionStateChange(func(state webrtc.ICEConnectionState) {
switch state {
case webrtc.ICEConnectionStateConnected:
var fields []interface{}
var fields []any
if pair, err := primaryTransport.GetSelectedCandidatePair(); err == nil {
fields = append(fields, "iceCandidatePair", pair)
}
logger.Debugw("ICE connected", fields...)
e.log.Debug("ICE connected", fields...)
case webrtc.ICEConnectionStateDisconnected:
logger.Debugw("ICE disconnected")
e.log.Debug("ICE disconnected")
case webrtc.ICEConnectionStateFailed:
logger.Debugw("ICE failed")
e.log.Debug("ICE failed")
e.handleDisconnect(false)
}
})
Expand All @@ -323,7 +332,7 @@ func (e *RTCEngine) configure(
e.publisher.OnOffer = func(offer webrtc.SessionDescription) {
e.hasPublish.Store(true)
if err := e.client.SendOffer(offer); err != nil {
logger.Errorw("could not send offer", err)
e.log.Error("could not send offer", "error", err)
}
}

Expand Down Expand Up @@ -352,14 +361,14 @@ func (e *RTCEngine) configure(
// configure client
e.client.OnAnswer = func(sd webrtc.SessionDescription) {
if err := e.publisher.SetRemoteDescription(sd); err != nil {
logger.Errorw("could not set remote description", err)
e.log.Error("could not set remote description", "error", err)
} else {
logger.Debugw("successfully set publisher answer")
e.log.Debug("successfully set publisher answer")
}
}
e.client.OnTrickle = func(init webrtc.ICECandidateInit, target livekit.SignalTarget) {
var err error
logger.Debugw("remote ICE candidate",
e.log.Debug("remote ICE candidate",
"target", target,
"candidate", init.Candidate,
)
Expand All @@ -369,13 +378,13 @@ func (e *RTCEngine) configure(
err = e.subscriber.AddICECandidate(init)
}
if err != nil {
logger.Errorw("could not add ICE candidate", err)
e.log.Error("could not add ICE candidate", "error", err)
}
}
e.client.OnOffer = func(sd webrtc.SessionDescription) {
logger.Debugw("received offer for subscriber")
e.log.Debug("received offer for subscriber")
if err := e.subscriber.SetRemoteDescription(sd); err != nil {
logger.Errorw("could not set remote description", err)
e.log.Error("could not set remote description", "error", err)
return
}

Expand Down Expand Up @@ -535,19 +544,19 @@ func (e *RTCEngine) handleDisconnect(fullReconnect bool) {
if reconnectCount == 0 && e.OnRestarting != nil {
e.OnRestarting()
}
logger.Infow("restarting connection...", "reconnectCount", reconnectCount)
e.log.Info("restarting connection...", "reconnectCount", reconnectCount)
if err := e.restartConnection(); err != nil {
logger.Errorw("restart connection failed", err)
e.log.Error("restart connection failed", "error", err)
} else {
return
}
} else {
if reconnectCount == 0 && e.OnResuming != nil {
e.OnResuming()
}
logger.Infow("resuming connection...", "reconnectCount", reconnectCount)
e.log.Info("resuming connection...", "reconnectCount", reconnectCount)
if err := e.resumeConnection(); err != nil {
logger.Errorw("resume connection failed", err)
e.log.Error("resume connection failed", "error", err)
} else {
return
}
Expand Down Expand Up @@ -625,15 +634,15 @@ func (e *RTCEngine) restartConnection() error {
func (e *RTCEngine) createPublisherAnswerAndSend() error {
answer, err := e.subscriber.pc.CreateAnswer(nil)
if err != nil {
logger.Errorw("could not create answer", err)
e.log.Error("could not create answer", "error", err)
return err
}
if err := e.subscriber.pc.SetLocalDescription(answer); err != nil {
logger.Errorw("could not set subscriber local description", err)
e.log.Error("could not set subscriber local description", "error", err)
return err
}
if err := e.client.SendAnswer(answer); err != nil {
logger.Errorw("could not send answer for subscriber", err)
e.log.Error("could not send answer for subscriber", "error", err)
return err
}
return nil
Expand All @@ -643,7 +652,7 @@ func (e *RTCEngine) handleLeave(leave *livekit.LeaveRequest) {
if leave.GetCanReconnect() {
e.handleDisconnect(true)
} else {
logger.Infow("server initiated leave",
e.log.Info("server initiated leave",
"reason", leave.GetReason(),
"canReconnect", leave.GetCanReconnect(),
)
Expand Down
11 changes: 6 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@ go 1.21

require (
github.com/bep/debounce v1.2.1
github.com/go-logr/logr v1.4.1
github.com/go-logr/stdr v1.2.2
github.com/gorilla/websocket v1.5.1
github.com/livekit/mediatransportutil v0.0.0-20240302142739-1c3dd691a1b8
github.com/livekit/protocol v1.12.0
github.com/livekit/protocol v1.12.1-0.20240409153235-c69c1b0580dc
github.com/magefile/mage v1.15.0
github.com/pion/dtls/v2 v2.2.10
github.com/pion/interceptor v0.1.27
Expand All @@ -24,6 +22,7 @@ require (
)

require (
github.com/benbjohnson/clock v1.3.5 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
Expand All @@ -34,6 +33,7 @@ require (
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/gammazero/deque v0.2.1 // indirect
github.com/go-jose/go-jose/v3 v3.0.3 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/jxskiss/base62 v1.1.0 // indirect
Expand Down Expand Up @@ -65,10 +65,11 @@ require (
github.com/zeebo/xxh3 v1.0.2 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/crypto v0.19.0 // indirect
go.uber.org/zap/exp v0.2.0 // indirect
golang.org/x/crypto v0.22.0 // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.17.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c // indirect
google.golang.org/grpc v1.62.0 // indirect
Expand Down
17 changes: 10 additions & 7 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
Expand Down Expand Up @@ -27,11 +29,8 @@ github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0
github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU=
github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k=
github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
Expand Down Expand Up @@ -77,8 +76,8 @@ github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1 h1:jm09419p0lqTkD
github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ=
github.com/livekit/mediatransportutil v0.0.0-20240302142739-1c3dd691a1b8 h1:xawydPEACNO5Ncs2LgioTjWghXQ0eUN1q1RnVUUyVnI=
github.com/livekit/mediatransportutil v0.0.0-20240302142739-1c3dd691a1b8/go.mod h1:jwKUCmObuiEDH0iiuJHaGMXwRs3RjrB4G6qqgkr/5oE=
github.com/livekit/protocol v1.12.0 h1:B7qsqq5xf9MmyG9WEk9/gMsfMVXuyLNxX5cO6TQil6s=
github.com/livekit/protocol v1.12.0/go.mod h1:G7Pa985GhZv2MCC3UnUocBhZfi3DsWA6WmlSkkpQYTM=
github.com/livekit/protocol v1.12.1-0.20240409153235-c69c1b0580dc h1:l6tUvbsi3NAxkHKrjuNPSwe0n1fGMd+IkUfmD+wq+R4=
github.com/livekit/protocol v1.12.1-0.20240409153235-c69c1b0580dc/go.mod h1:jB6PWwf4tdMAwy+jxexqaVWuQiiklAtO4F5zZzWkTII=
github.com/livekit/psrpc v0.5.3-0.20240228172457-3724cb4adbc4 h1:253WtQ2VGVHzIIzW9MUZj7vUDDILESU3zsEbiRdxYF0=
github.com/livekit/psrpc v0.5.3-0.20240228172457-3724cb4adbc4/go.mod h1:CQUBSPfYYAaevg1TNCc6/aYsa8DJH4jSRFdCeSZk5u0=
github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg=
Expand Down Expand Up @@ -192,6 +191,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
go.uber.org/zap/exp v0.2.0 h1:FtGenNNeCATRB3CmB/yEUnjEFeJWpB/pMcy7e2bKPYs=
go.uber.org/zap/exp v0.2.0/go.mod h1:t0gqAIdh1MfKv9EwN/dLwfZnJxe9ITAZN78HEWPFWDQ=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
Expand All @@ -200,8 +201,9 @@ golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE
golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
Expand Down Expand Up @@ -254,8 +256,9 @@ golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
Expand Down
6 changes: 3 additions & 3 deletions integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func pubNullTrack(t *testing.T, room *Room, name string) *LocalTrackPublication

track.OnBind(func() {
if err := track.StartWrite(provider, func() {}); err != nil {
logger.Errorw("Could not start writing", err)
room.log.Error("Could not start writing", "error", err)
}
})

Expand Down Expand Up @@ -185,7 +185,7 @@ func TestResume(t *testing.T) {
pub.Simulate(SimulateSignalReconnect)
require.Eventually(t, func() bool { return reconnected.Load() }, 5*time.Second, 100*time.Millisecond)

logger.Infow("reconnected")
getLogger().Info("reconnected")

localPub := pubNullTrack(t, pub, audioTrackName)
require.Equal(t, localPub.Name(), audioTrackName)
Expand Down Expand Up @@ -215,7 +215,7 @@ func TestForceTLS(t *testing.T) {
pub.Simulate(SimulateForceTLS)
require.Eventually(t, func() bool { return reconnected.Load() && pub.engine.ensurePublisherConnected(true) == nil }, 15*time.Second, 100*time.Millisecond)

logger.Infow("reconnected")
getLogger().Info("reconnected")

getSelectedPair := func(pc *webrtc.PeerConnection) (*webrtc.ICECandidatePair, error) {
sctp := pc.SCTP()
Expand Down
8 changes: 4 additions & 4 deletions localparticipant.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ func (p *LocalParticipant) PublishTrack(track webrtc.TrackLocal, opts *TrackPubl

publisher.Negotiate()

logger.Infow("published track", "name", opts.Name, "source", opts.Source.String(), "trackID", pubRes.Track.Sid)
p.log.Info("published track", "name", opts.Name, "source", opts.Source.String(), "trackID", pubRes.Track.Sid)

return pub, nil
}
Expand Down Expand Up @@ -224,7 +224,7 @@ func (p *LocalParticipant) PublishSimulcastTrack(tracks []*LocalTrack, opts *Tra

publisher.Negotiate()

logger.Infow("published simulcast track", "name", opts.Name, "source", opts.Source.String(), "trackID", pubRes.Track.Sid)
p.log.Info("published simulcast track", "name", opts.Name, "source", opts.Source.String(), "trackID", pubRes.Track.Sid)

return pub, nil
}
Expand Down Expand Up @@ -252,7 +252,7 @@ func (p *LocalParticipant) republishTracks() {
} else if track := pub.TrackLocal(); track != nil {
p.PublishTrack(track, &opt)
} else {
logger.Warnw("could not republish track as no track local found", nil, "track", pub.SID())
p.log.Warn("could not republish track as no track local found", "track", pub.SID())
}
}
}
Expand Down Expand Up @@ -401,7 +401,7 @@ func (p *LocalParticipant) UnpublishTrack(sid string) error {

pub.CloseTrack()

logger.Infow("unpublished track", "name", pub.Name(), "sid", sid)
p.log.Info("unpublished track", "name", pub.Name(), "sid", sid)

return err
}
Expand Down
Loading