func ForEachDataPoint()

in metricsgenreceiver/internal/dp/datapoint.go [8:50]


func ForEachDataPoint(ms *pmetric.Metrics, visitor func(res pcommon.Resource, is pcommon.InstrumentationScope, m pmetric.Metric, dp DataPoint)) {
	rms := ms.ResourceMetrics()
	for i := 0; i < rms.Len(); i++ {
		rm := rms.At(i)
		ilms := rm.ScopeMetrics()
		for j := 0; j < ilms.Len(); j++ {
			sm := ilms.At(j)
			metricsList := sm.Metrics()
			for k := 0; k < metricsList.Len(); k++ {
				m := metricsList.At(k)
				//exhaustive:enforce
				switch metricsList.At(k).Type() {
				case pmetric.MetricTypeGauge:
					ds := m.Gauge().DataPoints()
					for l := 0; l < ds.Len(); l++ {
						visitor(rm.Resource(), sm.Scope(), m, ds.At(l))
					}
				case pmetric.MetricTypeSum:
					ds := m.Sum().DataPoints()
					for l := 0; l < ds.Len(); l++ {
						visitor(rm.Resource(), sm.Scope(), m, ds.At(l))
					}
				case pmetric.MetricTypeHistogram:
					ds := m.Histogram().DataPoints()
					for l := 0; l < ds.Len(); l++ {
						visitor(rm.Resource(), sm.Scope(), m, ds.At(l))
					}
				case pmetric.MetricTypeExponentialHistogram:
					ds := m.ExponentialHistogram().DataPoints()
					for l := 0; l < ds.Len(); l++ {
						visitor(rm.Resource(), sm.Scope(), m, ds.At(l))
					}
				case pmetric.MetricTypeSummary:
					ds := m.Summary().DataPoints()
					for l := 0; l < ds.Len(); l++ {
						visitor(rm.Resource(), sm.Scope(), m, ds.At(l))
					}
				case pmetric.MetricTypeEmpty:
				}
			}
		}
	}
}