@@ -6,7 +6,7 @@ use crate::encoding::{EncodeGaugeValue, EncodeMetric, MetricEncoder};
6
6
7
7
use super :: { MetricType , TypedMetric } ;
8
8
use std:: marker:: PhantomData ;
9
- use std:: sync:: atomic:: { AtomicI32 , Ordering } ;
9
+ use std:: sync:: atomic:: { AtomicI32 , AtomicU32 , Ordering } ;
10
10
#[ cfg( not( any( target_arch = "mips" , target_arch = "powerpc" ) ) ) ]
11
11
use std:: sync:: atomic:: { AtomicI64 , AtomicU64 } ;
12
12
use std:: sync:: Arc ;
@@ -134,55 +134,81 @@ pub trait Atomic<N> {
134
134
fn get ( & self ) -> N ;
135
135
}
136
136
137
- #[ cfg( not( any( target_arch = "mips" , target_arch = "powerpc" ) ) ) ]
138
- impl Atomic < i64 > for AtomicI64 {
139
- fn inc ( & self ) -> i64 {
137
+ impl Atomic < i32 > for AtomicI32 {
138
+ fn inc ( & self ) -> i32 {
140
139
self . inc_by ( 1 )
141
140
}
142
141
143
- fn inc_by ( & self , v : i64 ) -> i64 {
142
+ fn inc_by ( & self , v : i32 ) -> i32 {
144
143
self . fetch_add ( v, Ordering :: Relaxed )
145
144
}
146
145
147
- fn dec ( & self ) -> i64 {
146
+ fn dec ( & self ) -> i32 {
148
147
self . dec_by ( 1 )
149
148
}
150
149
151
- fn dec_by ( & self , v : i64 ) -> i64 {
150
+ fn dec_by ( & self , v : i32 ) -> i32 {
152
151
self . fetch_sub ( v, Ordering :: Relaxed )
153
152
}
154
153
155
- fn set ( & self , v : i64 ) -> i64 {
154
+ fn set ( & self , v : i32 ) -> i32 {
156
155
self . swap ( v, Ordering :: Relaxed )
157
156
}
158
157
159
- fn get ( & self ) -> i64 {
158
+ fn get ( & self ) -> i32 {
160
159
self . load ( Ordering :: Relaxed )
161
160
}
162
161
}
163
162
164
- impl Atomic < i32 > for AtomicI32 {
165
- fn inc ( & self ) -> i32 {
163
+ impl Atomic < u32 > for AtomicU32 {
164
+ fn inc ( & self ) -> u32 {
166
165
self . inc_by ( 1 )
167
166
}
168
167
169
- fn inc_by ( & self , v : i32 ) -> i32 {
168
+ fn inc_by ( & self , v : u32 ) -> u32 {
170
169
self . fetch_add ( v, Ordering :: Relaxed )
171
170
}
172
171
173
- fn dec ( & self ) -> i32 {
172
+ fn dec ( & self ) -> u32 {
174
173
self . dec_by ( 1 )
175
174
}
176
175
177
- fn dec_by ( & self , v : i32 ) -> i32 {
176
+ fn dec_by ( & self , v : u32 ) -> u32 {
178
177
self . fetch_sub ( v, Ordering :: Relaxed )
179
178
}
180
179
181
- fn set ( & self , v : i32 ) -> i32 {
180
+ fn set ( & self , v : u32 ) -> u32 {
182
181
self . swap ( v, Ordering :: Relaxed )
183
182
}
184
183
185
- fn get ( & self ) -> i32 {
184
+ fn get ( & self ) -> u32 {
185
+ self . load ( Ordering :: Relaxed )
186
+ }
187
+ }
188
+
189
+ #[ cfg( not( any( target_arch = "mips" , target_arch = "powerpc" ) ) ) ]
190
+ impl Atomic < i64 > for AtomicI64 {
191
+ fn inc ( & self ) -> i64 {
192
+ self . inc_by ( 1 )
193
+ }
194
+
195
+ fn inc_by ( & self , v : i64 ) -> i64 {
196
+ self . fetch_add ( v, Ordering :: Relaxed )
197
+ }
198
+
199
+ fn dec ( & self ) -> i64 {
200
+ self . dec_by ( 1 )
201
+ }
202
+
203
+ fn dec_by ( & self , v : i64 ) -> i64 {
204
+ self . fetch_sub ( v, Ordering :: Relaxed )
205
+ }
206
+
207
+ fn set ( & self , v : i64 ) -> i64 {
208
+ self . swap ( v, Ordering :: Relaxed )
209
+ }
210
+
211
+ fn get ( & self ) -> i64 {
186
212
self . load ( Ordering :: Relaxed )
187
213
}
188
214
}
0 commit comments