fix(gateway): isolate qualification evidence

This commit is contained in:
sechmachine
2026-07-30 15:06:23 +07:00
parent c0aabf2a72
commit b5aaff9e39
10 changed files with 1004 additions and 160 deletions
+16 -3
View File
@@ -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
}