@@ -100,11 +100,7 @@ impl Default for AggregateTimeInitiator {
100100/// Builds aggregate functions
101101pub ( crate ) struct AggregateBuilder < T > {
102102 /// The temporality used for the returned aggregate functions.
103- ///
104- /// If this is not provided, a default of cumulative will be used (except for the
105- /// last-value aggregate function where delta is the only appropriate
106- /// temporality).
107- temporality : Option < Temporality > ,
103+ temporality : Temporality ,
108104
109105 /// The attribute filter the aggregate function will use on the input of
110106 /// measurements.
@@ -116,7 +112,7 @@ pub(crate) struct AggregateBuilder<T> {
116112type Filter = Arc < dyn Fn ( & KeyValue ) -> bool + Send + Sync > ;
117113
118114impl < T : Number > AggregateBuilder < T > {
119- pub ( crate ) fn new ( temporality : Option < Temporality > , filter : Option < Filter > ) -> Self {
115+ pub ( crate ) fn new ( temporality : Temporality , filter : Option < Filter > ) -> Self {
120116 AggregateBuilder {
121117 temporality,
122118 filter,
@@ -140,16 +136,12 @@ impl<T: Number> AggregateBuilder<T> {
140136
141137 /// Builds a last-value aggregate function input and output.
142138 pub ( crate ) fn last_value ( & self ) -> ( impl Measure < T > , impl ComputeAggregation ) {
143- let lv = Arc :: new ( LastValue :: new ( ) ) ;
139+ let lv = Arc :: new ( LastValue :: new ( self . temporality ) ) ;
144140 let agg_lv = Arc :: clone ( & lv) ;
145- let t = self . temporality ;
146141
147142 (
148143 self . filter ( move |n, a : & [ KeyValue ] | lv. measure ( n, a) ) ,
149- move |dest : Option < & mut dyn Aggregation > | match t {
150- Some ( Temporality :: Delta ) => agg_lv. delta ( dest) ,
151- _ => agg_lv. cumulative ( dest) ,
152- } ,
144+ agg_lv,
153145 )
154146 }
155147
@@ -158,31 +150,23 @@ impl<T: Number> AggregateBuilder<T> {
158150 & self ,
159151 monotonic : bool ,
160152 ) -> ( impl Measure < T > , impl ComputeAggregation ) {
161- let s = Arc :: new ( PrecomputedSum :: new ( monotonic) ) ;
153+ let s = Arc :: new ( PrecomputedSum :: new ( self . temporality , monotonic) ) ;
162154 let agg_sum = Arc :: clone ( & s) ;
163- let t = self . temporality ;
164155
165156 (
166157 self . filter ( move |n, a : & [ KeyValue ] | s. measure ( n, a) ) ,
167- move |dest : Option < & mut dyn Aggregation > | match t {
168- Some ( Temporality :: Delta ) => agg_sum. delta ( dest) ,
169- _ => agg_sum. cumulative ( dest) ,
170- } ,
158+ agg_sum,
171159 )
172160 }
173161
174162 /// Builds a sum aggregate function input and output.
175163 pub ( crate ) fn sum ( & self , monotonic : bool ) -> ( impl Measure < T > , impl ComputeAggregation ) {
176- let s = Arc :: new ( Sum :: new ( monotonic) ) ;
164+ let s = Arc :: new ( Sum :: new ( self . temporality , monotonic) ) ;
177165 let agg_sum = Arc :: clone ( & s) ;
178- let t = self . temporality ;
179166
180167 (
181168 self . filter ( move |n, a : & [ KeyValue ] | s. measure ( n, a) ) ,
182- move |dest : Option < & mut dyn Aggregation > | match t {
183- Some ( Temporality :: Delta ) => agg_sum. delta ( dest) ,
184- _ => agg_sum. cumulative ( dest) ,
185- } ,
169+ agg_sum,
186170 )
187171 }
188172
@@ -193,17 +177,15 @@ impl<T: Number> AggregateBuilder<T> {
193177 record_min_max : bool ,
194178 record_sum : bool ,
195179 ) -> ( impl Measure < T > , impl ComputeAggregation ) {
196- let h = Arc :: new ( Histogram :: new ( boundaries, record_min_max, record_sum) ) ;
180+ let h = Arc :: new ( Histogram :: new (
181+ self . temporality ,
182+ boundaries,
183+ record_min_max,
184+ record_sum,
185+ ) ) ;
197186 let agg_h = Arc :: clone ( & h) ;
198- let t = self . temporality ;
199187
200- (
201- self . filter ( move |n, a : & [ KeyValue ] | h. measure ( n, a) ) ,
202- move |dest : Option < & mut dyn Aggregation > | match t {
203- Some ( Temporality :: Delta ) => agg_h. delta ( dest) ,
204- _ => agg_h. cumulative ( dest) ,
205- } ,
206- )
188+ ( self . filter ( move |n, a : & [ KeyValue ] | h. measure ( n, a) ) , agg_h)
207189 }
208190
209191 /// Builds an exponential histogram aggregate function input and output.
@@ -215,21 +197,15 @@ impl<T: Number> AggregateBuilder<T> {
215197 record_sum : bool ,
216198 ) -> ( impl Measure < T > , impl ComputeAggregation ) {
217199 let h = Arc :: new ( ExpoHistogram :: new (
200+ self . temporality ,
218201 max_size,
219202 max_scale,
220203 record_min_max,
221204 record_sum,
222205 ) ) ;
223206 let agg_h = Arc :: clone ( & h) ;
224- let t = self . temporality ;
225207
226- (
227- self . filter ( move |n, a : & [ KeyValue ] | h. measure ( n, a) ) ,
228- move |dest : Option < & mut dyn Aggregation > | match t {
229- Some ( Temporality :: Delta ) => agg_h. delta ( dest) ,
230- _ => agg_h. cumulative ( dest) ,
231- } ,
232- )
208+ ( self . filter ( move |n, a : & [ KeyValue ] | h. measure ( n, a) ) , agg_h)
233209 }
234210}
235211
@@ -245,7 +221,8 @@ mod tests {
245221
246222 #[ test]
247223 fn last_value_aggregation ( ) {
248- let ( measure, agg) = AggregateBuilder :: < u64 > :: new ( None , None ) . last_value ( ) ;
224+ let ( measure, agg) =
225+ AggregateBuilder :: < u64 > :: new ( Temporality :: Cumulative , None ) . last_value ( ) ;
249226 let mut a = Gauge {
250227 data_points : vec ! [ GaugeDataPoint {
251228 attributes: vec![ KeyValue :: new( "a" , 1 ) ] ,
@@ -271,7 +248,7 @@ mod tests {
271248 fn precomputed_sum_aggregation ( ) {
272249 for temporality in [ Temporality :: Delta , Temporality :: Cumulative ] {
273250 let ( measure, agg) =
274- AggregateBuilder :: < u64 > :: new ( Some ( temporality) , None ) . precomputed_sum ( true ) ;
251+ AggregateBuilder :: < u64 > :: new ( temporality, None ) . precomputed_sum ( true ) ;
275252 let mut a = Sum {
276253 data_points : vec ! [
277254 SumDataPoint {
@@ -312,7 +289,7 @@ mod tests {
312289 #[ test]
313290 fn sum_aggregation ( ) {
314291 for temporality in [ Temporality :: Delta , Temporality :: Cumulative ] {
315- let ( measure, agg) = AggregateBuilder :: < u64 > :: new ( Some ( temporality) , None ) . sum ( true ) ;
292+ let ( measure, agg) = AggregateBuilder :: < u64 > :: new ( temporality, None ) . sum ( true ) ;
316293 let mut a = Sum {
317294 data_points : vec ! [
318295 SumDataPoint {
@@ -353,7 +330,7 @@ mod tests {
353330 #[ test]
354331 fn explicit_bucket_histogram_aggregation ( ) {
355332 for temporality in [ Temporality :: Delta , Temporality :: Cumulative ] {
356- let ( measure, agg) = AggregateBuilder :: < u64 > :: new ( Some ( temporality) , None )
333+ let ( measure, agg) = AggregateBuilder :: < u64 > :: new ( temporality, None )
357334 . explicit_bucket_histogram ( vec ! [ 1.0 ] , true , true ) ;
358335 let mut a = Histogram {
359336 data_points : vec ! [ HistogramDataPoint {
@@ -396,7 +373,7 @@ mod tests {
396373 #[ test]
397374 fn exponential_histogram_aggregation ( ) {
398375 for temporality in [ Temporality :: Delta , Temporality :: Cumulative ] {
399- let ( measure, agg) = AggregateBuilder :: < u64 > :: new ( Some ( temporality) , None )
376+ let ( measure, agg) = AggregateBuilder :: < u64 > :: new ( temporality, None )
400377 . exponential_bucket_histogram ( 4 , 20 , true , true ) ;
401378 let mut a = ExponentialHistogram {
402379 data_points : vec ! [ ExponentialHistogramDataPoint {
0 commit comments