Add support for simultaneous requests from different consumers

This commit is contained in:
Alexey Khit
2023-01-08 20:31:00 +03:00
parent 6906b56524
commit 57fa6a5530
+7
View File
@@ -18,6 +18,7 @@ type Stream struct {
producers []*Producer producers []*Producer
consumers []*Consumer consumers []*Consumer
mu sync.Mutex mu sync.Mutex
wg sync.WaitGroup
} }
func NewStream(source interface{}) *Stream { func NewStream(source interface{}) *Stream {
@@ -59,6 +60,9 @@ func (s *Stream) AddConsumer(cons streamer.Consumer) (err error) {
var codecs string var codecs string
// support for multiple simultaneous requests from different consumers
s.wg.Add(1)
// Step 1. Get consumer medias // Step 1. Get consumer medias
for icc, consMedia := range cons.GetMedias() { for icc, consMedia := range cons.GetMedias() {
log.Trace().Stringer("media", consMedia). log.Trace().Stringer("media", consMedia).
@@ -97,6 +101,9 @@ func (s *Stream) AddConsumer(cons streamer.Consumer) (err error) {
} }
} }
s.wg.Done()
s.wg.Wait()
if len(producers) == 0 { if len(producers) == 0 {
s.stopProducers() s.stopProducers()