@@ -122,8 +122,8 @@ public int MaxPayloadSize
122122
123123 public MetricsCollector ( BosunOptions options )
124124 {
125- _localMetricsQueue = new PayloadQueue ( ) ;
126- _externalCounterQueue = new PayloadQueue ( ) ;
125+ _localMetricsQueue = new PayloadQueue ( QueueType . Local ) ;
126+ _externalCounterQueue = new PayloadQueue ( QueueType . ExternalCounters ) ;
127127
128128 _localMetricsQueue . PayloadDropped += OnPayloadDropped ;
129129 _externalCounterQueue . PayloadDropped += OnPayloadDropped ;
@@ -729,39 +729,34 @@ private void SerializeMetrics(out int metricsCount, out int bytesWritten)
729729
730730 metricsCount = 0 ;
731731 bytesWritten = 0 ;
732- MetricWriter localWriter = null ;
733- MetricWriter externalCounterWriter = null ;
734- try
735- {
736- if ( _localMetrics . Count > 0 )
737- {
738- localWriter = _localMetricsQueue . GetWriter ( ) ;
739- SerializeMetricListToWriter ( localWriter , _localMetrics , timestamp ) ;
740- metricsCount += localWriter . MetricsCount ;
741- bytesWritten += localWriter . TotalBytesWritten ;
742- }
743-
744- if ( _externalCounterMetrics . Count > 0 )
745- {
746- externalCounterWriter = _externalCounterQueue . GetWriter ( ) ;
747- SerializeMetricListToWriter ( externalCounterWriter , _externalCounterMetrics , timestamp ) ;
748- metricsCount += externalCounterWriter . MetricsCount ;
749- bytesWritten += externalCounterWriter . TotalBytesWritten ;
750- }
751- }
752- finally
753- {
754- localWriter ? . EndBatch ( ) ;
755- externalCounterWriter ? . EndBatch ( ) ;
756- }
732+ SerializeMetricListToWriter ( _localMetricsQueue , _localMetrics , timestamp , ref metricsCount , ref bytesWritten ) ;
733+ SerializeMetricListToWriter ( _externalCounterQueue , _externalCounterMetrics , timestamp , ref metricsCount , ref bytesWritten ) ;
757734 }
758735 }
759736
760- private static void SerializeMetricListToWriter ( MetricWriter writer , List < BosunMetric > metrics , DateTime timestamp )
737+ private static void SerializeMetricListToWriter ( PayloadQueue queue , List < BosunMetric > metrics , DateTime timestamp , ref int metricsCount , ref int bytesWritten )
761738 {
762- foreach ( var m in metrics )
739+ if ( metrics . Count == 0 )
740+ return ;
741+
742+ var writer = queue . GetWriter ( ) ;
743+
744+ try
745+ {
746+ foreach ( var m in metrics )
747+ {
748+ m . SerializeInternal ( writer , timestamp ) ;
749+
750+ if ( queue . IsFull )
751+ break ;
752+ }
753+
754+ metricsCount += writer . MetricsCount ;
755+ bytesWritten += writer . TotalBytesWritten ;
756+ }
757+ finally
763758 {
764- m . SerializeInternal ( writer , timestamp ) ;
759+ writer . EndBatch ( ) ;
765760 }
766761 }
767762
0 commit comments