ChatterBox.Client.Universal.Background.AudioVideoMetricsCollector.TrackNetworkQualityMetrics C# (CSharp) Method

TrackNetworkQualityMetrics() public method

public TrackNetworkQualityMetrics ( ) : void
return void
        public void TrackNetworkQualityMetrics()
        {
            IDictionary<string, string> properties = new Dictionary<string, string> {
                { "Timestamp", System.DateTimeOffset.UtcNow.ToString(@"hh\:mm\:ss") } };
            IDictionary<string, double> metrics = new Dictionary<string, double>();

            if (_inboundMaxBitsPerSecondCount != 0)
            {
                metrics.Add("Maximum Inbound Speed (bit/sec)",
                    (double)_inboundMaxBitsPerSecondSum / _inboundMaxBitsPerSecondCount);
            }
            if (_outboundMaxBitsPerSecondCount != 0)
            {
                metrics.Add("Maximum Outbound Speed (bit/sec)",
                    (double)_outboundMaxBitsPerSecondSum / _outboundMaxBitsPerSecondCount);
            }
            Task.Run(() => _telemetry.TrackEvent("Network Avarage Quality During Call", properties, metrics));
            _inboundMaxBitsPerSecondSum = 0;
            _inboundMaxBitsPerSecondCount = 0;
            _outboundMaxBitsPerSecondSum = 0;
            _outboundMaxBitsPerSecondCount = 0; 
        }
    }

Usage Example

 public void StopCallWatch()
 {
     if (_callWatch != null)
     {
         _callWatch.Stop();
         DateTime currentDateTime = DateTime.Now;
         TimeSpan time            = _callWatch.Elapsed;
         Task.Run(() => _telemetry.TrackRequest("Call Duration", currentDateTime,
                                                time,
                                                "200", true)); // Response code, success
         if (_metricsCollector != null)
         {
             _metricsCollector.TrackCurrentDelayMetrics();
             _metricsCollector.TrackNetworkQualityMetrics();
         }
         if (_networkTimer != null)
         {
             _networkTimer.Dispose();
         }
     }
 }