@@ -12,7 +12,7 @@ func MoveResourcesIf(from, to pmetric.Metrics, f func(pmetric.ResourceMetrics) b
12
12
if ! f (rs ) {
13
13
return false
14
14
}
15
- rs .CopyTo (to .ResourceMetrics ().AppendEmpty ())
15
+ rs .MoveTo (to .ResourceMetrics ().AppendEmpty ())
16
16
return true
17
17
})
18
18
}
@@ -23,39 +23,27 @@ func MoveResourcesIf(from, to pmetric.Metrics, f func(pmetric.ResourceMetrics) b
23
23
// Resources or Scopes are removed from the original if they become empty. All ordering is preserved.
24
24
func MoveMetricsWithContextIf (from , to pmetric.Metrics , f func (pmetric.ResourceMetrics , pmetric.ScopeMetrics , pmetric.Metric ) bool ) {
25
25
rms := from .ResourceMetrics ()
26
- for i := 0 ; i < rms .Len (); i ++ {
27
- rm := rms .At (i )
26
+ rms .RemoveIf (func (rm pmetric.ResourceMetrics ) bool {
28
27
sms := rm .ScopeMetrics ()
29
28
var rmCopy * pmetric.ResourceMetrics
30
- for j := 0 ; j < sms .Len (); j ++ {
31
- sm := sms .At (j )
29
+ sms .RemoveIf (func (sm pmetric.ScopeMetrics ) bool {
32
30
ms := sm .Metrics ()
33
31
var smCopy * pmetric.ScopeMetrics
34
32
ms .RemoveIf (func (m pmetric.Metric ) bool {
35
33
if ! f (rm , sm , m ) {
36
34
return false
37
35
}
38
36
if rmCopy == nil {
39
- rmc := to .ResourceMetrics ().AppendEmpty ()
40
- rmCopy = & rmc
41
- rm .Resource ().CopyTo (rmCopy .Resource ())
42
- rmCopy .SetSchemaUrl (rm .SchemaUrl ())
37
+ rmCopy = copyResourceMetrics (rm , to .ResourceMetrics ())
43
38
}
44
39
if smCopy == nil {
45
- smc := rmCopy .ScopeMetrics ().AppendEmpty ()
46
- smCopy = & smc
47
- sm .Scope ().CopyTo (smCopy .Scope ())
48
- smCopy .SetSchemaUrl (sm .SchemaUrl ())
40
+ smCopy = copyScopeMetrics (sm , rmCopy .ScopeMetrics ())
49
41
}
50
- m .CopyTo (smCopy .Metrics ().AppendEmpty ())
42
+ m .MoveTo (smCopy .Metrics ().AppendEmpty ())
51
43
return true
52
44
})
53
- }
54
- sms .RemoveIf (func (sm pmetric.ScopeMetrics ) bool {
55
45
return sm .Metrics ().Len () == 0
56
46
})
57
- }
58
- rms .RemoveIf (func (rm pmetric.ResourceMetrics ) bool {
59
47
return rm .ScopeMetrics ().Len () == 0
60
48
})
61
49
}
@@ -66,16 +54,13 @@ func MoveMetricsWithContextIf(from, to pmetric.Metrics, f func(pmetric.ResourceM
66
54
// Resources, Scopes, or Metrics are removed from the original if they become empty. All ordering is preserved.
67
55
func MoveDataPointsWithContextIf (from , to pmetric.Metrics , f func (pmetric.ResourceMetrics , pmetric.ScopeMetrics , pmetric.Metric , any ) bool ) {
68
56
rms := from .ResourceMetrics ()
69
- for i := 0 ; i < rms .Len (); i ++ {
70
- rm := rms .At (i )
57
+ rms .RemoveIf (func (rm pmetric.ResourceMetrics ) bool {
71
58
sms := rm .ScopeMetrics ()
72
59
var rmCopy * pmetric.ResourceMetrics
73
- for j := 0 ; j < sms .Len (); j ++ {
74
- sm := sms .At (j )
60
+ sms .RemoveIf (func (sm pmetric.ScopeMetrics ) bool {
75
61
ms := sm .Metrics ()
76
62
var smCopy * pmetric.ScopeMetrics
77
- for k := 0 ; k < ms .Len (); k ++ {
78
- m := ms .At (k )
63
+ ms .RemoveIf (func (m pmetric.Metric ) bool {
79
64
var mCopy * pmetric.Metric
80
65
81
66
// TODO condense this code
@@ -87,168 +72,127 @@ func MoveDataPointsWithContextIf(from, to pmetric.Metrics, f func(pmetric.Resour
87
72
return false
88
73
}
89
74
if rmCopy == nil {
90
- rmc := to .ResourceMetrics ().AppendEmpty ()
91
- rmCopy = & rmc
92
- rm .Resource ().CopyTo (rmCopy .Resource ())
93
- rmCopy .SetSchemaUrl (rm .SchemaUrl ())
75
+ rmCopy = copyResourceMetrics (rm , to .ResourceMetrics ())
94
76
}
95
77
if smCopy == nil {
96
- smc := rmCopy .ScopeMetrics ().AppendEmpty ()
97
- smCopy = & smc
98
- sm .Scope ().CopyTo (smCopy .Scope ())
99
- smCopy .SetSchemaUrl (sm .SchemaUrl ())
78
+ smCopy = copyScopeMetrics (sm , rmCopy .ScopeMetrics ())
100
79
}
101
80
if mCopy == nil {
102
- mc := smCopy .Metrics ().AppendEmpty ()
103
- mCopy = & mc
104
- mCopy .SetName (m .Name ())
105
- mCopy .SetDescription (m .Description ())
106
- mCopy .SetUnit (m .Unit ())
81
+ mCopy = copyMetricDescription (m , smCopy .Metrics ())
107
82
mCopy .SetEmptyGauge ()
108
83
}
109
- dp .CopyTo (mCopy .Gauge ().DataPoints ().AppendEmpty ())
84
+ dp .MoveTo (mCopy .Gauge ().DataPoints ().AppendEmpty ())
110
85
return true
111
86
})
87
+ return dps .Len () == 0
112
88
case pmetric .MetricTypeSum :
113
89
dps := m .Sum ().DataPoints ()
114
90
dps .RemoveIf (func (dp pmetric.NumberDataPoint ) bool {
115
91
if ! f (rm , sm , m , dp ) {
116
92
return false
117
93
}
118
94
if rmCopy == nil {
119
- rmc := to .ResourceMetrics ().AppendEmpty ()
120
- rmCopy = & rmc
121
- rm .Resource ().CopyTo (rmCopy .Resource ())
122
- rmCopy .SetSchemaUrl (rm .SchemaUrl ())
95
+ rmCopy = copyResourceMetrics (rm , to .ResourceMetrics ())
123
96
}
124
97
if smCopy == nil {
125
- smc := rmCopy .ScopeMetrics ().AppendEmpty ()
126
- smCopy = & smc
127
- sm .Scope ().CopyTo (smCopy .Scope ())
128
- smCopy .SetSchemaUrl (sm .SchemaUrl ())
98
+ smCopy = copyScopeMetrics (sm , rmCopy .ScopeMetrics ())
129
99
}
130
100
if mCopy == nil {
131
- mc := smCopy .Metrics ().AppendEmpty ()
132
- mCopy = & mc
133
- mCopy .SetName (m .Name ())
134
- mCopy .SetDescription (m .Description ())
135
- mCopy .SetUnit (m .Unit ())
101
+ mCopy = copyMetricDescription (m , smCopy .Metrics ())
136
102
mCopy .SetEmptySum ()
137
103
}
138
- dp .CopyTo (mCopy .Sum ().DataPoints ().AppendEmpty ())
104
+ dp .MoveTo (mCopy .Sum ().DataPoints ().AppendEmpty ())
139
105
return true
140
106
})
107
+ return dps .Len () == 0
141
108
case pmetric .MetricTypeHistogram :
142
109
dps := m .Histogram ().DataPoints ()
143
110
dps .RemoveIf (func (dp pmetric.HistogramDataPoint ) bool {
144
111
if ! f (rm , sm , m , dp ) {
145
112
return false
146
113
}
147
114
if rmCopy == nil {
148
- rmc := to .ResourceMetrics ().AppendEmpty ()
149
- rmCopy = & rmc
150
- rm .Resource ().CopyTo (rmCopy .Resource ())
151
- rmCopy .SetSchemaUrl (rm .SchemaUrl ())
115
+ rmCopy = copyResourceMetrics (rm , to .ResourceMetrics ())
152
116
}
153
117
if smCopy == nil {
154
- smc := rmCopy .ScopeMetrics ().AppendEmpty ()
155
- smCopy = & smc
156
- sm .Scope ().CopyTo (smCopy .Scope ())
157
- smCopy .SetSchemaUrl (sm .SchemaUrl ())
118
+ smCopy = copyScopeMetrics (sm , rmCopy .ScopeMetrics ())
158
119
}
159
120
if mCopy == nil {
160
- mc := smCopy .Metrics ().AppendEmpty ()
161
- mCopy = & mc
162
- mCopy .SetName (m .Name ())
163
- mCopy .SetDescription (m .Description ())
164
- mCopy .SetUnit (m .Unit ())
121
+ mCopy = copyMetricDescription (m , smCopy .Metrics ())
165
122
mCopy .SetEmptyHistogram ()
166
123
}
167
- dp .CopyTo (mCopy .Histogram ().DataPoints ().AppendEmpty ())
124
+ dp .MoveTo (mCopy .Histogram ().DataPoints ().AppendEmpty ())
168
125
return true
169
126
})
127
+ return dps .Len () == 0
170
128
case pmetric .MetricTypeExponentialHistogram :
171
129
dps := m .ExponentialHistogram ().DataPoints ()
172
130
dps .RemoveIf (func (dp pmetric.ExponentialHistogramDataPoint ) bool {
173
131
if ! f (rm , sm , m , dp ) {
174
132
return false
175
133
}
176
134
if rmCopy == nil {
177
- rmc := to .ResourceMetrics ().AppendEmpty ()
178
- rmCopy = & rmc
179
- rm .Resource ().CopyTo (rmCopy .Resource ())
180
- rmCopy .SetSchemaUrl (rm .SchemaUrl ())
135
+ rmCopy = copyResourceMetrics (rm , to .ResourceMetrics ())
181
136
}
182
137
if smCopy == nil {
183
- smc := rmCopy .ScopeMetrics ().AppendEmpty ()
184
- smCopy = & smc
185
- sm .Scope ().CopyTo (smCopy .Scope ())
186
- smCopy .SetSchemaUrl (sm .SchemaUrl ())
138
+ smCopy = copyScopeMetrics (sm , rmCopy .ScopeMetrics ())
187
139
}
188
140
if mCopy == nil {
189
- mc := smCopy .Metrics ().AppendEmpty ()
190
- mCopy = & mc
191
- mCopy .SetName (m .Name ())
192
- mCopy .SetDescription (m .Description ())
193
- mCopy .SetUnit (m .Unit ())
141
+ mCopy = copyMetricDescription (m , smCopy .Metrics ())
194
142
mCopy .SetEmptyExponentialHistogram ()
195
143
}
196
- dp .CopyTo (mCopy .ExponentialHistogram ().DataPoints ().AppendEmpty ())
144
+ dp .MoveTo (mCopy .ExponentialHistogram ().DataPoints ().AppendEmpty ())
197
145
return true
198
146
})
147
+ return dps .Len () == 0
199
148
case pmetric .MetricTypeSummary :
200
149
dps := m .Summary ().DataPoints ()
201
150
dps .RemoveIf (func (dp pmetric.SummaryDataPoint ) bool {
202
151
if ! f (rm , sm , m , dp ) {
203
152
return false
204
153
}
205
154
if rmCopy == nil {
206
- rmc := to .ResourceMetrics ().AppendEmpty ()
207
- rmCopy = & rmc
208
- rm .Resource ().CopyTo (rmCopy .Resource ())
209
- rmCopy .SetSchemaUrl (rm .SchemaUrl ())
155
+ rmCopy = copyResourceMetrics (rm , to .ResourceMetrics ())
210
156
}
211
157
if smCopy == nil {
212
- smc := rmCopy .ScopeMetrics ().AppendEmpty ()
213
- smCopy = & smc
214
- sm .Scope ().CopyTo (smCopy .Scope ())
215
- smCopy .SetSchemaUrl (sm .SchemaUrl ())
158
+ smCopy = copyScopeMetrics (sm , rmCopy .ScopeMetrics ())
216
159
}
217
160
if mCopy == nil {
218
- mc := smCopy .Metrics ().AppendEmpty ()
219
- mCopy = & mc
220
- mCopy .SetName (m .Name ())
221
- mCopy .SetDescription (m .Description ())
222
- mCopy .SetUnit (m .Unit ())
161
+ mCopy = copyMetricDescription (m , smCopy .Metrics ())
223
162
mCopy .SetEmptySummary ()
224
163
}
225
- dp .CopyTo (mCopy .Summary ().DataPoints ().AppendEmpty ())
164
+ dp .MoveTo (mCopy .Summary ().DataPoints ().AppendEmpty ())
226
165
return true
227
166
})
167
+ return dps .Len () == 0
228
168
}
229
- }
230
- ms .RemoveIf (func (m pmetric.Metric ) bool {
231
- var numDPs int
232
- switch m .Type () {
233
- case pmetric .MetricTypeGauge :
234
- numDPs = m .Gauge ().DataPoints ().Len ()
235
- case pmetric .MetricTypeSum :
236
- numDPs = m .Sum ().DataPoints ().Len ()
237
- case pmetric .MetricTypeHistogram :
238
- numDPs = m .Histogram ().DataPoints ().Len ()
239
- case pmetric .MetricTypeExponentialHistogram :
240
- numDPs = m .ExponentialHistogram ().DataPoints ().Len ()
241
- case pmetric .MetricTypeSummary :
242
- numDPs = m .Summary ().DataPoints ().Len ()
243
- }
244
- return numDPs == 0
169
+ // Do not remove unknown type.
170
+ return false
245
171
})
246
- }
247
- sms .RemoveIf (func (sm pmetric.ScopeMetrics ) bool {
248
172
return sm .Metrics ().Len () == 0
249
173
})
250
- }
251
- rms .RemoveIf (func (rm pmetric.ResourceMetrics ) bool {
252
174
return rm .ScopeMetrics ().Len () == 0
253
175
})
254
176
}
177
+
178
+ func copyResourceMetrics (from pmetric.ResourceMetrics , to pmetric.ResourceMetricsSlice ) * pmetric.ResourceMetrics {
179
+ rmc := to .AppendEmpty ()
180
+ from .Resource ().CopyTo (rmc .Resource ())
181
+ rmc .SetSchemaUrl (from .SchemaUrl ())
182
+ return & rmc
183
+ }
184
+
185
+ func copyScopeMetrics (from pmetric.ScopeMetrics , to pmetric.ScopeMetricsSlice ) * pmetric.ScopeMetrics {
186
+ smc := to .AppendEmpty ()
187
+ from .Scope ().CopyTo (smc .Scope ())
188
+ smc .SetSchemaUrl (from .SchemaUrl ())
189
+ return & smc
190
+ }
191
+
192
+ func copyMetricDescription (from pmetric.Metric , to pmetric.MetricSlice ) * pmetric.Metric {
193
+ mc := to .AppendEmpty ()
194
+ mc .SetName (from .Name ())
195
+ mc .SetDescription (from .Description ())
196
+ mc .SetUnit (from .Unit ())
197
+ return & mc
198
+ }
0 commit comments