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
consumers []*Consumer
mu sync.Mutex
wg sync.WaitGroup
}
func NewStream(source interface{}) *Stream {
@@ -59,6 +60,9 @@ func (s *Stream) AddConsumer(cons streamer.Consumer) (err error) {
var codecs string
// support for multiple simultaneous requests from different consumers
s.wg.Add(1)
// Step 1. Get consumer medias
for icc, consMedia := range cons.GetMedias() {
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 {
s.stopProducers()