fix(gateway): isolate qualification evidence
This commit is contained in:
+16
-3
@@ -77,6 +77,13 @@ type ServerConfig struct {
|
||||
ProviderProfile string
|
||||
ProviderIdentity string
|
||||
PacerKbps int64
|
||||
mediaObserver func(mediaTimingObservation)
|
||||
}
|
||||
|
||||
type mediaTimingObservation struct {
|
||||
QueueDelay time.Duration
|
||||
ProcessingDelay time.Duration
|
||||
PacingDelay time.Duration
|
||||
}
|
||||
|
||||
type Server struct {
|
||||
@@ -725,11 +732,17 @@ func (s *gatewaySession) sendMedia(channel byte, media ProviderMedia) error {
|
||||
s.server.metrics.MediaPackets.Add(1)
|
||||
s.server.metrics.MediaBytes.Add(uint64(len(encoded)))
|
||||
}
|
||||
processingDelay := media.EnqueuedAt.Sub(media.ReceivedAt) + time.Since(processingStarted) - pacingDelay
|
||||
s.server.metrics.QueueDelayNanos.Add(uint64(dequeuedAt.Sub(media.EnqueuedAt)))
|
||||
s.server.metrics.ProcessingDelayNanos.Add(uint64(max(processingDelay, 0)))
|
||||
queueDelay := dequeuedAt.Sub(media.EnqueuedAt)
|
||||
processingDelay := max(media.EnqueuedAt.Sub(media.ReceivedAt)+time.Since(processingStarted)-pacingDelay, 0)
|
||||
s.server.metrics.QueueDelayNanos.Add(uint64(queueDelay))
|
||||
s.server.metrics.ProcessingDelayNanos.Add(uint64(processingDelay))
|
||||
s.server.metrics.PacingDelayNanos.Add(uint64(pacingDelay))
|
||||
s.server.metrics.ProcessingSamples.Add(1)
|
||||
if s.server.config.mediaObserver != nil {
|
||||
s.server.config.mediaObserver(mediaTimingObservation{
|
||||
QueueDelay: queueDelay, ProcessingDelay: processingDelay, PacingDelay: pacingDelay,
|
||||
})
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user