7
7
8
8
use std:: fmt:: Debug ;
9
9
use std:: ops:: Deref ;
10
+ use std:: sync:: Arc ;
10
11
11
12
use crate :: attributes:: kv_from_option_attr;
12
13
use aws_smithy_observability:: attributes:: { Attributes , Context } ;
@@ -147,7 +148,7 @@ impl Meter for MeterWrap {
147
148
callback : Box < dyn Fn ( & dyn AsyncMeasure < Value = f64 > ) + Send + Sync > ,
148
149
units : Option < String > ,
149
150
description : Option < String > ,
150
- ) -> Box < dyn AsyncMeasure < Value = f64 > > {
151
+ ) -> Arc < dyn AsyncMeasure < Value = f64 > > {
151
152
let mut builder = self . f64_observable_gauge ( name) . with_callback (
152
153
move |input : & dyn OtelAsyncInstrument < f64 > | {
153
154
callback ( & AsyncInstrumentWrap ( input) ) ;
@@ -162,15 +163,15 @@ impl Meter for MeterWrap {
162
163
builder = builder. with_unit ( u) ;
163
164
}
164
165
165
- Box :: new ( GaugeWrap ( builder. init ( ) ) )
166
+ Arc :: new ( GaugeWrap ( builder. init ( ) ) )
166
167
}
167
168
168
169
fn create_up_down_counter (
169
170
& self ,
170
171
name : String ,
171
172
units : Option < String > ,
172
173
description : Option < String > ,
173
- ) -> Box < dyn UpDownCounter > {
174
+ ) -> Arc < dyn UpDownCounter > {
174
175
let mut builder = self . i64_up_down_counter ( name) ;
175
176
if let Some ( desc) = description {
176
177
builder = builder. with_description ( desc) ;
@@ -180,7 +181,7 @@ impl Meter for MeterWrap {
180
181
builder = builder. with_unit ( u) ;
181
182
}
182
183
183
- Box :: new ( UpDownCounterWrap ( builder. init ( ) ) )
184
+ Arc :: new ( UpDownCounterWrap ( builder. init ( ) ) )
184
185
}
185
186
186
187
fn create_async_up_down_counter (
@@ -189,7 +190,7 @@ impl Meter for MeterWrap {
189
190
callback : Box < dyn Fn ( & dyn AsyncMeasure < Value = i64 > ) + Send + Sync > ,
190
191
units : Option < String > ,
191
192
description : Option < String > ,
192
- ) -> Box < dyn AsyncMeasure < Value = i64 > > {
193
+ ) -> Arc < dyn AsyncMeasure < Value = i64 > > {
193
194
let mut builder = self . i64_observable_up_down_counter ( name) . with_callback (
194
195
move |input : & dyn OtelAsyncInstrument < i64 > | {
195
196
callback ( & AsyncInstrumentWrap ( input) ) ;
@@ -204,15 +205,15 @@ impl Meter for MeterWrap {
204
205
builder = builder. with_unit ( u) ;
205
206
}
206
207
207
- Box :: new ( AsyncUpDownCounterWrap ( builder. init ( ) ) )
208
+ Arc :: new ( AsyncUpDownCounterWrap ( builder. init ( ) ) )
208
209
}
209
210
210
211
fn create_monotonic_counter (
211
212
& self ,
212
213
name : String ,
213
214
units : Option < String > ,
214
215
description : Option < String > ,
215
- ) -> Box < dyn MonotonicCounter > {
216
+ ) -> Arc < dyn MonotonicCounter > {
216
217
let mut builder = self . u64_counter ( name) ;
217
218
if let Some ( desc) = description {
218
219
builder = builder. with_description ( desc) ;
@@ -222,7 +223,7 @@ impl Meter for MeterWrap {
222
223
builder = builder. with_unit ( u) ;
223
224
}
224
225
225
- Box :: new ( MonotonicCounterWrap ( builder. init ( ) ) )
226
+ Arc :: new ( MonotonicCounterWrap ( builder. init ( ) ) )
226
227
}
227
228
228
229
fn create_async_monotonic_counter (
@@ -231,7 +232,7 @@ impl Meter for MeterWrap {
231
232
callback : Box < dyn Fn ( & dyn AsyncMeasure < Value = u64 > ) + Send + Sync > ,
232
233
units : Option < String > ,
233
234
description : Option < String > ,
234
- ) -> Box < dyn AsyncMeasure < Value = u64 > > {
235
+ ) -> Arc < dyn AsyncMeasure < Value = u64 > > {
235
236
let mut builder = self . u64_observable_counter ( name) . with_callback (
236
237
move |input : & dyn OtelAsyncInstrument < u64 > | {
237
238
callback ( & AsyncInstrumentWrap ( input) ) ;
@@ -246,15 +247,15 @@ impl Meter for MeterWrap {
246
247
builder = builder. with_unit ( u) ;
247
248
}
248
249
249
- Box :: new ( AsyncMonotonicCounterWrap ( builder. init ( ) ) )
250
+ Arc :: new ( AsyncMonotonicCounterWrap ( builder. init ( ) ) )
250
251
}
251
252
252
253
fn create_histogram (
253
254
& self ,
254
255
name : String ,
255
256
units : Option < String > ,
256
257
description : Option < String > ,
257
- ) -> Box < dyn Histogram > {
258
+ ) -> Arc < dyn Histogram > {
258
259
let mut builder = self . f64_histogram ( name) ;
259
260
if let Some ( desc) = description {
260
261
builder = builder. with_description ( desc) ;
@@ -264,7 +265,7 @@ impl Meter for MeterWrap {
264
265
builder = builder. with_unit ( u) ;
265
266
}
266
267
267
- Box :: new ( HistogramWrap ( builder. init ( ) ) )
268
+ Arc :: new ( HistogramWrap ( builder. init ( ) ) )
268
269
}
269
270
}
270
271
@@ -301,8 +302,8 @@ impl AwsSdkOtelMeterProvider {
301
302
}
302
303
303
304
impl ProvideMeter for AwsSdkOtelMeterProvider {
304
- fn get_meter ( & self , scope : & ' static str , _attributes : Option < & Attributes > ) -> Box < dyn Meter > {
305
- Box :: new ( MeterWrap ( self . meter_provider . meter ( scope) ) )
305
+ fn get_meter ( & self , scope : & ' static str , _attributes : Option < & Attributes > ) -> Arc < dyn Meter > {
306
+ Arc :: new ( MeterWrap ( self . meter_provider . meter ( scope) ) )
306
307
}
307
308
308
309
fn as_any ( & self ) -> & dyn std:: any:: Any {
0 commit comments