@@ -206,6 +206,12 @@ func WithDTLSEllipticCurves(curves ...dtlsElliptic.Curve) ConnectOption {
206206 }
207207}
208208
209+ func WithLogger (l protoLogger.Logger ) ConnectOption {
210+ return func (p * signalling.ConnectParams ) {
211+ p .Logger = l
212+ }
213+ }
214+
209215type PLIWriter func (webrtc.SSRC )
210216
211217type Room struct {
@@ -361,27 +367,31 @@ func (r *Room) JoinWithToken(url, token string, opts ...ConnectOption) error {
361367 opt (params )
362368 }
363369
370+ if params .Logger != nil {
371+ r .SetLogger (params .Logger )
372+ }
373+
364374 isSuccess := false
365375 cloudHostname , _ := parseCloudURL (url )
366376 if ! params .DisableRegionDiscovery && cloudHostname != "" {
367377 if err := r .regionURLProvider .RefreshRegionSettings (cloudHostname , token ); err != nil {
368- logger .Errorw ("failed to get best url" , err )
378+ r . log .Errorw ("failed to get best url" , err )
369379 } else {
370380 for tries := uint (0 ); ! isSuccess ; tries ++ {
371381 bestURL , err := r .regionURLProvider .PopBestURL (cloudHostname , token )
372382 if err != nil {
373- logger .Errorw ("failed to get best url" , err )
383+ r . log .Errorw ("failed to get best url" , err )
374384 break
375385 }
376386
377- logger .Debugw ("RTC engine joining room" , "url" , bestURL , "connectTimeout" , params .ConnectTimeout )
387+ r . log .Debugw ("RTC engine joining room" , "url" , bestURL , "connectTimeout" , params .ConnectTimeout )
378388 callCtx , cancelCallCtx := context .WithTimeout (ctx , params .ConnectTimeout )
379389 isSuccess , err = r .engine .JoinContext (callCtx , bestURL , token , params )
380390 cancelCallCtx ()
381391 if err != nil {
382392 // try the next URL with exponential backoff
383393 d := time .Duration (1 << min (tries , 6 )) * 100 * time .Millisecond // max 6.4 seconds
384- logger .Errorw (
394+ r . log .Errorw (
385395 "failed to join room" , err ,
386396 "retrying in" , d ,
387397 "url" , bestURL ,
0 commit comments