Do not need pending migration tracks. (#2507)

Simplify a bit. Pending migratiion tracks need not be maintained as when
a migrated track is added, it is added to up track manager and treated
as a published track. When up track manager closes, published tracks
will close. So, no need to maintain a separate list.
This commit is contained in:
Raja Subramanian
2024-02-25 01:31:04 +05:30
committed by GitHub
parent e5b8e25064
commit eed457d8be
+2 -25
View File
@@ -172,8 +172,6 @@ type ParticipantImpl struct {
pendingTracksLock utils.RWMutex
pendingTracks map[string]*pendingTrackInfo
pendingPublishingTracks map[livekit.TrackID]*pendingTrackInfo
// migrated in tracks that have not fired need close at participant close
pendingMigratedTracks []*MediaTrack
// supported codecs
enabledPublishCodecs []*livekit.Codec
@@ -714,7 +712,6 @@ func (p *ParticipantImpl) handleMigrateTracks() {
p.pubLogger.Warnw("could not find migrated track", nil, "cid", cid)
}
}
p.pendingMigratedTracks = append(p.pendingMigratedTracks, addedTracks...)
if len(addedTracks) != 0 {
p.dirty.Store(true)
@@ -730,19 +727,6 @@ func (p *ParticipantImpl) handleMigrateTracks() {
}()
}
func (p *ParticipantImpl) removePendingMigratedTrack(mt *MediaTrack) {
p.pendingTracksLock.Lock()
for i, t := range p.pendingMigratedTracks {
if t == mt {
p.pendingMigratedTracks[i] = p.pendingMigratedTracks[len(p.pendingMigratedTracks)-1]
p.pendingMigratedTracks[len(p.pendingMigratedTracks)-1] = nil
p.pendingMigratedTracks = p.pendingMigratedTracks[:len(p.pendingMigratedTracks)-1]
break
}
}
p.pendingTracksLock.Unlock()
}
// AddTrack is called when client intends to publish track.
// records track details and lets client know it's ok to proceed
func (p *ParticipantImpl) AddTrack(req *livekit.AddTrackRequest) {
@@ -813,14 +797,9 @@ func (p *ParticipantImpl) Close(sendLeave bool, reason types.ParticipantCloseRea
p.pendingTracksLock.Lock()
p.pendingTracks = make(map[string]*pendingTrackInfo)
pendingMigratedTracksToClose := p.pendingMigratedTracks
p.pendingMigratedTracks = p.pendingMigratedTracks[:0]
p.pendingPublishingTracks = make(map[livekit.TrackID]*pendingTrackInfo)
p.pendingTracksLock.Unlock()
for _, t := range pendingMigratedTracksToClose {
t.Close(isExpectedToResume)
}
p.UpTrackManager.Close(isExpectedToResume)
p.updateState(livekit.ParticipantInfo_DISCONNECTED)
@@ -1967,9 +1946,7 @@ func (p *ParticipantImpl) mediaTrackReceived(track *webrtc.TrackRemote, rtpRecei
p.pendingTracksLock.Unlock()
if mt.AddReceiver(rtpReceiver, track, mid) {
p.removePendingMigratedTrack(mt)
}
mt.AddReceiver(rtpReceiver, track, mid)
if newTrack {
go func() {