@@ -113,9 +113,8 @@ var (
113113// -------------------------------------------
114114
115115const (
116- signallingDataChannelName = "_signalling"
117- reliableDataChannelName = "_reliable"
118- lossyDataChannelName = "_lossy"
116+ reliableDataChannelName = "_reliable"
117+ lossyDataChannelName = "_lossy"
119118
120119 maxReconnectCount = 10
121120 initialReconnectInterval = 300 * time .Millisecond
@@ -125,8 +124,6 @@ const (
125124type RTCEngine struct {
126125 log protoLogger.Logger
127126
128- signallingVersion signalling.SignallingVersion
129-
130127 engineHandler engineHandler
131128 cbGetLocalParticipantSID func () string
132129
@@ -139,7 +136,6 @@ type RTCEngine struct {
139136 signalTransport signalling.SignalTransport
140137
141138 dclock sync.RWMutex
142- signallingDC * webrtc.DataChannel
143139 reliableDC * webrtc.DataChannel
144140 lossyDC * webrtc.DataChannel
145141 reliableDCSub * webrtc.DataChannel
@@ -168,57 +164,32 @@ type RTCEngine struct {
168164}
169165
170166func NewRTCEngine (
171- signallingVersion signalling.SignallingVersion ,
172167 engineHandler engineHandler ,
173168 getLocalParticipantSID func () string ,
174169) * RTCEngine {
175170 e := & RTCEngine {
176171 log : logger ,
177- signallingVersion : signallingVersion ,
178172 engineHandler : engineHandler ,
179173 cbGetLocalParticipantSID : getLocalParticipantSID ,
180174 trackPublishedListeners : make (map [string ]chan * livekit.TrackPublishedResponse ),
181175 joinTimeout : 15 * time .Second ,
182176 reliableMsgSeq : 1 ,
183177 }
184- switch signallingVersion {
185- case signalling .SignallingVersionV1 :
186- e .signalling = signalling .NewSignalling (signalling.SignallingParams {
187- Logger : e .log ,
188- })
189- e .signalHandler = signalling .NewSignalHandler (signalling.SignalHandlerParams {
190- Logger : e .log ,
191- Processor : e ,
192- })
193- e .signalTransport = signalling .NewSignalTransportWebSocket (signalling.SignalTransportWebSocketParams {
194- Logger : e .log ,
195- Version : Version ,
196- Protocol : PROTOCOL ,
197- Signalling : e .signalling ,
198- SignalTransportHandler : e ,
199- SignalHandler : e .signalHandler ,
200- })
201-
202- case signalling .SignallingVersionV2 :
203- e .signalling = signalling .NewSignallingv2 (signalling.Signallingv2Params {
204- Logger : e .log ,
205- })
206- e .signalHandler = signalling .NewSignalHandlerv2 (signalling.SignalHandlerv2Params {
207- Logger : e .log ,
208- Processor : e ,
209- Signalling : e .signalling ,
210- })
211- e .signalTransport = signalling .NewSignalTransportHybrid (signalling.SignalTransportHybridParams {
212- Logger : e .log ,
213- Version : Version ,
214- Protocol : PROTOCOL ,
215- Signalling : e .signalling ,
216- SignalHandler : e .signalHandler ,
217- })
218-
219- default :
220- return nil
221- }
178+ e .signalling = signalling .NewSignalling (signalling.SignallingParams {
179+ Logger : e .log ,
180+ })
181+ e .signalHandler = signalling .NewSignalHandler (signalling.SignalHandlerParams {
182+ Logger : e .log ,
183+ Processor : e ,
184+ })
185+ e .signalTransport = signalling .NewSignalTransportWebSocket (signalling.SignalTransportWebSocketParams {
186+ Logger : e .log ,
187+ Version : Version ,
188+ Protocol : PROTOCOL ,
189+ Signalling : e .signalling ,
190+ SignalTransportHandler : e ,
191+ SignalHandler : e .signalHandler ,
192+ })
222193
223194 e .onClose = []func (){}
224195 return e
@@ -248,35 +219,19 @@ func (e *RTCEngine) JoinContext(
248219 e .token .Store (token )
249220 e .connParams = connectParams
250221
251- var (
252- publisherOffer webrtc.SessionDescription
253- err error
254- )
255- if e .signallingVersion == signalling .SignallingVersionV2 {
256- e .pclock .Lock ()
257- e .createPublisherPCLocked (webrtc.Configuration {})
258-
259- publisherOffer , err = e .publisher .GetOffer ()
260- if err != nil {
261- e .pclock .Unlock ()
262- return false , err
263- }
264- e .pclock .Unlock ()
265- }
266-
267- err = e .signalTransport .Join (ctx , url , token , * connectParams , publisherOffer )
268- if err != nil {
222+ if err := e .signalTransport .Join (ctx , url , token , * connectParams ); err != nil {
269223 if verr := e .validate (ctx , url , token , connectParams , "" ); verr != nil {
270224 return false , verr
271225 }
272226 return false , err
273227 }
274228
275- if err = e .waitUntilConnected (); err != nil {
229+ if err : = e .waitUntilConnected (); err != nil {
276230 return false , err
277231 }
232+
278233 e .hasConnected .Store (true )
279- return true , err
234+ return true , nil
280235}
281236
282237func (e * RTCEngine ) OnClose (onClose func ()) {
@@ -459,31 +414,6 @@ func (e *RTCEngine) createPublisherPCLocked(configuration webrtc.Configuration)
459414 return err
460415 }
461416 e .reliableDC .OnMessage (e .handleDataPacket )
462-
463- // SIGNALLING-V2-TODO: may need a separate peer connection
464- // SIGNALLING-V2-TODO: instantiating this should rely on signal transport strategy rather than signalling version
465- if e .signallingVersion == signalling .SignallingVersionV2 {
466- e .signallingDC , err = e .publisher .pc .CreateDataChannel (signallingDataChannelName , & webrtc.DataChannelInit {
467- Ordered : & trueVal ,
468- })
469- if err != nil {
470- e .dclock .Unlock ()
471- return err
472- }
473- e .signallingDC .OnOpen (func () {
474- signallingTransportDataChannel := signalling .NewSignalTransportDataChannel (signalling.SignalTransportDataChannelParams {
475- Logger : e .log ,
476- DataChannel : e .signallingDC ,
477- SignalHandler : e .signalHandler ,
478- })
479- e .signalTransport .SetAsyncTransport (signallingTransportDataChannel )
480- e .signalTransport .Start ()
481- })
482- e .signallingDC .OnClose (func () {
483- // SIGNALLING-V2-TODO: should call SignalTransportHandler.OnClose
484- })
485- e .signallingDC .OnMessage (e .handleSignalling )
486- }
487417 e .dclock .Unlock ()
488418
489419 return nil
@@ -742,10 +672,6 @@ func (e *RTCEngine) readDataPacket(msg webrtc.DataChannelMessage) (*livekit.Data
742672 return dataPacket , err
743673}
744674
745- func (e * RTCEngine ) handleSignalling (msg webrtc.DataChannelMessage ) {
746- e .signalHandler .HandleEncodedMessage (msg .Data )
747- }
748-
749675func (e * RTCEngine ) handleDisconnect (fullReconnect bool ) {
750676 // do not retry until fully connected
751677 if e .closed .Load () || ! e .hasConnected .Load () {
@@ -1241,8 +1167,6 @@ func (e *RTCEngine) OnJoinResponse(res *livekit.JoinResponse) error {
12411167 isRestarting = true
12421168 }
12431169
1244- e .signalTransport .SetParticipantResource (e .url , res .GetParticipant ().Sid , e .token .Load ())
1245-
12461170 err := e .configure (res .IceServers , res .ClientConfiguration , proto .Bool (res .SubscriberPrimary ))
12471171 if err != nil {
12481172 e .log .Warnw ("could not configure" , err )
@@ -1380,7 +1304,6 @@ func (e *RTCEngine) OnTrackRemoteMuted(request *livekit.MuteTrackRequest) {
13801304
13811305func (e * RTCEngine ) OnTokenRefresh (refreshToken string ) {
13821306 e .token .Store (refreshToken )
1383- e .signalTransport .UpdateParticipantToken (refreshToken )
13841307}
13851308
13861309func (e * RTCEngine ) OnLeave (leave * livekit.LeaveRequest ) {
@@ -1410,50 +1333,6 @@ func (e *RTCEngine) OnSubscribedQualityUpdate(subscribedQualityUpdate *livekit.S
14101333 e .engineHandler .OnSubscribedQualityUpdate (subscribedQualityUpdate )
14111334}
14121335
1413- func (e * RTCEngine ) OnConnectResponse (res * livekit.ConnectResponse ) error {
1414- isRestarting := false
1415- if e .reconnecting .Load () && e .requiresFullReconnect .Load () {
1416- isRestarting = true
1417- }
1418-
1419- e .signalTransport .SetParticipantResource (e .url , res .GetParticipant ().Sid , e .token .Load ())
1420-
1421- err := e .configure (res .IceServers , res .ClientConfiguration , proto .Bool (true ))
1422- if err != nil {
1423- e .log .Warnw ("could not configure" , err )
1424- return err
1425- }
1426-
1427- e .engineHandler .OnRoomJoined (
1428- res .Room ,
1429- res .Participant ,
1430- res .OtherParticipants ,
1431- res .ServerInfo ,
1432- res .SifTrailer ,
1433- )
1434-
1435- e .signalTransport .Start ()
1436-
1437- // SIGNALLING-V2-TODO: should send publisher offer in connect request itself
1438- // send offer
1439- if res .FastPublish {
1440- if publisher , ok := e .Publisher (); ok {
1441- publisher .Negotiate ()
1442- } else {
1443- e .log .Warnw ("no publisher peer connection" , ErrNoPeerConnection )
1444- }
1445- }
1446-
1447- if res .SubscriberSdp != nil {
1448- e .OnOffer (protosignalling .FromProtoSessionDescription (res .SubscriberSdp ))
1449- }
1450-
1451- if isRestarting {
1452- e .engineHandler .OnRestarted (res .Room , res .Participant , res .OtherParticipants )
1453- }
1454- return nil
1455- }
1456-
14571336// ------------------------------------
14581337
14591338func setConfiguration (pcTransport * PCTransport , configuration webrtc.Configuration ) {
0 commit comments