fix: range remove

This commit is contained in:
langhuihui
2025-01-14 19:16:01 +08:00
parent 413b83c215
commit 44eb5d4ed4
4 changed files with 19 additions and 7 deletions

View File

@@ -92,6 +92,7 @@ func (s *Server) SetStreamAlias(ctx context.Context, req *pb.SetStreamAliasReque
aliasInfo.TransferSubscribers(publisher) // replace stream
aliasInfo.Publisher = publisher
} else {
aliasInfo.Publisher = publisher
s.Waiting.WakeUp(req.Alias, publisher)
}
}

View File

@@ -15,7 +15,7 @@ func TestTsTamer_Tame(t *testing.T) {
tr := &TsTamer{}
for i, tt := range tss {
if gotResult := tr.Tame(tt*time.Millisecond, 100); gotResult != wants[i]*time.Millisecond {
if gotResult := tr.Tame(tt*time.Millisecond, 100, 1.0); gotResult != wants[i]*time.Millisecond {
t.Errorf("TsTamer.Tame() = %v, want %v", gotResult, wants[i]*time.Millisecond)
}
}

View File

@@ -15,10 +15,8 @@ func (n *Class) GetKey() string {
return n.name
}
var cc Collection[string, *Class]
func TestCollection(t *testing.T) {
var cc Collection[string, *Class]
for i := 0; i < 10; i++ {
cc.Add(&Class{name: fmt.Sprintf("%d", i), Id: i})
}
@@ -30,6 +28,17 @@ func TestCollection(t *testing.T) {
}
}
func TestCollection_Range(t *testing.T) {
var cc Collection[string, *Class]
for i := 0; i < 10; i++ {
cc.Add(&Class{name: fmt.Sprintf("%d", i), Id: i})
}
for item := range cc.Range {
fmt.Println(item)
cc.Remove(item)
}
}
// TestItem 是用于测试的结构体
type TestItem struct {
ID string

View File

@@ -635,13 +635,15 @@ func (p *Publisher) Dispose() {
func (p *Publisher) TransferSubscribers(newPublisher *Publisher) {
p.Info("transfer subscribers", "newPublisher", newPublisher.ID, "newStreamPath", newPublisher.StreamPath)
var remain SubscriberCollection
for subscriber := range p.SubscriberRange {
if subscriber.Type != SubscribeTypeServer {
continue
remain.Add(subscriber)
} else {
newPublisher.AddSubscriber(subscriber)
}
newPublisher.AddSubscriber(subscriber)
p.Subscribers.Remove(subscriber)
}
p.Subscribers = remain
p.BufferTime = p.Plugin.GetCommonConf().Publish.BufferTime
p.AudioTrack.SetMinBuffer(p.BufferTime)
p.VideoTrack.SetMinBuffer(p.BufferTime)