fix(gateway): bound fake media shutdown
This commit is contained in:
+26
-6
@@ -443,20 +443,42 @@ func (s *fakeSession) EmitEvent(event ProviderEvent) {
|
||||
}
|
||||
|
||||
func (s *fakeSession) EmitVideo(payload []byte) {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
if s.state.State == ProviderStateTerminating || s.state.State == ProviderStateTerminated || s.state.State == ProviderStateDisconnected {
|
||||
return
|
||||
}
|
||||
select {
|
||||
case s.video <- append([]byte(nil), payload...):
|
||||
default:
|
||||
<-s.video
|
||||
s.video <- append([]byte(nil), payload...)
|
||||
select {
|
||||
case <-s.video:
|
||||
default:
|
||||
}
|
||||
select {
|
||||
case s.video <- append([]byte(nil), payload...):
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *fakeSession) EmitAudio(payload []byte) {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
if s.state.State == ProviderStateTerminating || s.state.State == ProviderStateTerminated || s.state.State == ProviderStateDisconnected {
|
||||
return
|
||||
}
|
||||
select {
|
||||
case s.audio <- append([]byte(nil), payload...):
|
||||
default:
|
||||
<-s.audio
|
||||
s.audio <- append([]byte(nil), payload...)
|
||||
select {
|
||||
case <-s.audio:
|
||||
default:
|
||||
}
|
||||
select {
|
||||
case s.audio <- append([]byte(nil), payload...):
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -542,12 +564,10 @@ func (s *fakeSession) Terminate(ctx context.Context) error {
|
||||
return nil
|
||||
}
|
||||
s.state.State = ProviderStateTerminating
|
||||
s.mu.Unlock()
|
||||
s.closeOnce.Do(func() {
|
||||
close(s.video)
|
||||
close(s.audio)
|
||||
})
|
||||
s.mu.Lock()
|
||||
s.state.State = ProviderStateTerminated
|
||||
s.mu.Unlock()
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user