@@ -10,23 +10,28 @@ pub mod tonic {
10
10
11
11
use opentelemetry:: { global, metrics:: MetricsError , Key , Value } ;
12
12
use opentelemetry_sdk:: metrics:: data:: {
13
- self , Exemplar as SdkExemplar , Gauge as SdkGauge , Histogram as SdkHistogram ,
14
- Metric as SdkMetric , ScopeMetrics as SdkScopeMetrics , Sum as SdkSum , Temporality ,
13
+ self , Exemplar as SdkExemplar , ExponentialHistogram as SdkExponentialHistogram ,
14
+ Gauge as SdkGauge , Histogram as SdkHistogram , Metric as SdkMetric ,
15
+ ScopeMetrics as SdkScopeMetrics , Sum as SdkSum , Temporality ,
15
16
} ;
16
17
use opentelemetry_sdk:: Resource as SdkResource ;
17
18
18
19
use crate :: proto:: tonic:: {
19
20
collector:: metrics:: v1:: ExportMetricsServiceRequest ,
20
21
common:: v1:: KeyValue ,
21
22
metrics:: v1:: {
22
- exemplar, exemplar:: Value as TonicExemplarValue , metric:: Data as TonicMetricData ,
23
- number_data_point, number_data_point:: Value as TonicDataPointValue ,
23
+ exemplar, exemplar:: Value as TonicExemplarValue ,
24
+ exponential_histogram_data_point:: Buckets as TonicBuckets ,
25
+ metric:: Data as TonicMetricData , number_data_point,
26
+ number_data_point:: Value as TonicDataPointValue ,
24
27
AggregationTemporality as TonicTemporality , AggregationTemporality ,
25
- DataPointFlags as TonicDataPointFlags , Exemplar as TonicExemplar , Gauge as TonicGauge ,
26
- Histogram as TonicHistogram , HistogramDataPoint as TonicHistogramDataPoint ,
27
- Metric as TonicMetric , NumberDataPoint as TonicNumberDataPoint ,
28
- ResourceMetrics as TonicResourceMetrics , ScopeMetrics as TonicScopeMetrics ,
29
- Sum as TonicSum ,
28
+ DataPointFlags as TonicDataPointFlags , Exemplar as TonicExemplar ,
29
+ ExponentialHistogram as TonicExponentialHistogram ,
30
+ ExponentialHistogramDataPoint as TonicExponentialHistogramDataPoint ,
31
+ Gauge as TonicGauge , Histogram as TonicHistogram ,
32
+ HistogramDataPoint as TonicHistogramDataPoint , Metric as TonicMetric ,
33
+ NumberDataPoint as TonicNumberDataPoint , ResourceMetrics as TonicResourceMetrics ,
34
+ ScopeMetrics as TonicScopeMetrics , Sum as TonicSum ,
30
35
} ,
31
36
resource:: v1:: Resource as TonicResource ,
32
37
} ;
@@ -159,6 +164,12 @@ pub mod tonic {
159
164
Ok ( TonicMetricData :: Histogram ( hist. into ( ) ) )
160
165
} else if let Some ( hist) = data. downcast_ref :: < SdkHistogram < f64 > > ( ) {
161
166
Ok ( TonicMetricData :: Histogram ( hist. into ( ) ) )
167
+ } else if let Some ( hist) = data. downcast_ref :: < SdkExponentialHistogram < i64 > > ( ) {
168
+ Ok ( TonicMetricData :: ExponentialHistogram ( hist. into ( ) ) )
169
+ } else if let Some ( hist) = data. downcast_ref :: < SdkExponentialHistogram < u64 > > ( ) {
170
+ Ok ( TonicMetricData :: ExponentialHistogram ( hist. into ( ) ) )
171
+ } else if let Some ( hist) = data. downcast_ref :: < SdkExponentialHistogram < f64 > > ( ) {
172
+ Ok ( TonicMetricData :: ExponentialHistogram ( hist. into ( ) ) )
162
173
} else if let Some ( sum) = data. downcast_ref :: < SdkSum < u64 > > ( ) {
163
174
Ok ( TonicMetricData :: Sum ( sum. into ( ) ) )
164
175
} else if let Some ( sum) = data. downcast_ref :: < SdkSum < i64 > > ( ) {
@@ -229,6 +240,43 @@ pub mod tonic {
229
240
}
230
241
}
231
242
243
+ impl < T > From < & SdkExponentialHistogram < T > > for TonicExponentialHistogram
244
+ where
245
+ T : Numeric ,
246
+ {
247
+ fn from ( hist : & SdkExponentialHistogram < T > ) -> Self {
248
+ TonicExponentialHistogram {
249
+ data_points : hist
250
+ . data_points
251
+ . iter ( )
252
+ . map ( |dp| TonicExponentialHistogramDataPoint {
253
+ attributes : dp. attributes . iter ( ) . map ( Into :: into) . collect ( ) ,
254
+ start_time_unix_nano : to_nanos ( dp. start_time ) ,
255
+ time_unix_nano : to_nanos ( dp. time ) ,
256
+ count : dp. count as u64 ,
257
+ sum : Some ( dp. sum . into_f64 ( ) ) ,
258
+ scale : dp. scale . into ( ) ,
259
+ zero_count : dp. zero_count ,
260
+ positive : Some ( TonicBuckets {
261
+ offset : dp. positive_bucket . offset ,
262
+ bucket_counts : dp. positive_bucket . counts . clone ( ) ,
263
+ } ) ,
264
+ negative : Some ( TonicBuckets {
265
+ offset : dp. negative_bucket . offset ,
266
+ bucket_counts : dp. negative_bucket . counts . clone ( ) ,
267
+ } ) ,
268
+ flags : TonicDataPointFlags :: default ( ) as u32 ,
269
+ exemplars : dp. exemplars . iter ( ) . map ( Into :: into) . collect ( ) ,
270
+ min : dp. min . map ( Numeric :: into_f64) ,
271
+ max : dp. max . map ( Numeric :: into_f64) ,
272
+ zero_threshold : dp. zero_threshold ,
273
+ } )
274
+ . collect ( ) ,
275
+ aggregation_temporality : TonicTemporality :: from ( hist. temporality ) . into ( ) ,
276
+ }
277
+ }
278
+ }
279
+
232
280
impl < T > From < & SdkSum < T > > for TonicSum
233
281
where
234
282
T : fmt:: Debug + Into < TonicExemplarValue > + Into < TonicDataPointValue > + Copy ,
@@ -302,19 +350,24 @@ pub mod grpcio {
302
350
303
351
use opentelemetry:: { global, metrics:: MetricsError , Key , Value } ;
304
352
use opentelemetry_sdk:: metrics:: data:: {
305
- self , Exemplar as SdkExemplar , Gauge as SdkGauge , Histogram as SdkHistogram ,
306
- Metric as SdkMetric , ScopeMetrics as SdkScopeMetrics , Sum as SdkSum , Temporality ,
353
+ self , Exemplar as SdkExemplar , ExponentialHistogram as SdkExponentialHistogram ,
354
+ Gauge as SdkGauge , Histogram as SdkHistogram , Metric as SdkMetric ,
355
+ ScopeMetrics as SdkScopeMetrics , Sum as SdkSum , Temporality ,
307
356
} ;
308
357
use opentelemetry_sdk:: Resource as SdkResource ;
309
358
310
359
use crate :: proto:: grpcio:: {
311
360
collector:: metrics:: v1:: ExportMetricsServiceRequest ,
312
361
common:: v1:: KeyValue ,
313
362
metrics:: v1:: {
314
- exemplar, exemplar:: Value as GrpcioExemplarValue , metric:: Data as GrpcioMetricData ,
315
- number_data_point, number_data_point:: Value as GrpcioDataPointValue ,
363
+ exemplar, exemplar:: Value as GrpcioExemplarValue ,
364
+ exponential_histogram_data_point:: Buckets as GrpcioBuckets ,
365
+ metric:: Data as GrpcioMetricData , number_data_point,
366
+ number_data_point:: Value as GrpcioDataPointValue ,
316
367
AggregationTemporality as GrpcioTemporality , AggregationTemporality ,
317
368
DataPointFlags as GrpcioDataPointFlags , Exemplar as GrpcioExemplar ,
369
+ ExponentialHistogram as GrpcioExponentialHistogram ,
370
+ ExponentialHistogramDataPoint as GrpcioExponentialHistogramDataPoint ,
318
371
Gauge as GrpcioGauge , Histogram as GrpcioHistogram ,
319
372
HistogramDataPoint as GrpcioHistogramDataPoint , Metric as GrpcioMetric ,
320
373
NumberDataPoint as GrpcioNumberDataPoint , ResourceMetrics as GrpcioResourceMetrics ,
@@ -451,6 +504,12 @@ pub mod grpcio {
451
504
Ok ( GrpcioMetricData :: Histogram ( hist. into ( ) ) )
452
505
} else if let Some ( hist) = data. downcast_ref :: < SdkHistogram < f64 > > ( ) {
453
506
Ok ( GrpcioMetricData :: Histogram ( hist. into ( ) ) )
507
+ } else if let Some ( hist) = data. downcast_ref :: < SdkExponentialHistogram < i64 > > ( ) {
508
+ Ok ( GrpcioMetricData :: ExponentialHistogram ( hist. into ( ) ) )
509
+ } else if let Some ( hist) = data. downcast_ref :: < SdkExponentialHistogram < u64 > > ( ) {
510
+ Ok ( GrpcioMetricData :: ExponentialHistogram ( hist. into ( ) ) )
511
+ } else if let Some ( hist) = data. downcast_ref :: < SdkExponentialHistogram < f64 > > ( ) {
512
+ Ok ( GrpcioMetricData :: ExponentialHistogram ( hist. into ( ) ) )
454
513
} else if let Some ( sum) = data. downcast_ref :: < SdkSum < u64 > > ( ) {
455
514
Ok ( GrpcioMetricData :: Sum ( sum. into ( ) ) )
456
515
} else if let Some ( sum) = data. downcast_ref :: < SdkSum < i64 > > ( ) {
@@ -521,6 +580,43 @@ pub mod grpcio {
521
580
}
522
581
}
523
582
583
+ impl < T > From < & SdkExponentialHistogram < T > > for GrpcioExponentialHistogram
584
+ where
585
+ T : Numeric ,
586
+ {
587
+ fn from ( hist : & SdkExponentialHistogram < T > ) -> Self {
588
+ GrpcioExponentialHistogram {
589
+ data_points : hist
590
+ . data_points
591
+ . iter ( )
592
+ . map ( |dp| GrpcioExponentialHistogramDataPoint {
593
+ attributes : dp. attributes . iter ( ) . map ( Into :: into) . collect ( ) ,
594
+ start_time_unix_nano : to_nanos ( dp. start_time ) ,
595
+ time_unix_nano : to_nanos ( dp. time ) ,
596
+ count : dp. count as u64 ,
597
+ sum : Some ( dp. sum . into_f64 ( ) ) ,
598
+ scale : dp. scale . into ( ) ,
599
+ zero_count : dp. zero_count ,
600
+ positive : Some ( GrpcioBuckets {
601
+ offset : dp. positive_bucket . offset ,
602
+ bucket_counts : dp. positive_bucket . counts . clone ( ) ,
603
+ } ) ,
604
+ negative : Some ( GrpcioBuckets {
605
+ offset : dp. negative_bucket . offset ,
606
+ bucket_counts : dp. negative_bucket . counts . clone ( ) ,
607
+ } ) ,
608
+ flags : GrpcioDataPointFlags :: default ( ) as u32 ,
609
+ exemplars : dp. exemplars . iter ( ) . map ( Into :: into) . collect ( ) ,
610
+ min : dp. min . map ( Numeric :: into_f64) ,
611
+ max : dp. max . map ( Numeric :: into_f64) ,
612
+ zero_threshold : dp. zero_threshold ,
613
+ } )
614
+ . collect ( ) ,
615
+ aggregation_temporality : GrpcioTemporality :: from ( hist. temporality ) . into ( ) ,
616
+ }
617
+ }
618
+ }
619
+
524
620
impl < T > From < & SdkSum < T > > for GrpcioSum
525
621
where
526
622
T : fmt:: Debug + Into < GrpcioExemplarValue > + Into < GrpcioDataPointValue > + Copy ,
0 commit comments