@@ -6,7 +6,7 @@ use crate::encoding::{EncodeGaugeValue, EncodeMetric, MetricEncoder};
66
77use super :: { MetricType , TypedMetric } ;
88use std:: marker:: PhantomData ;
9- use std:: sync:: atomic:: { AtomicI32 , Ordering } ;
9+ use std:: sync:: atomic:: { AtomicI32 , AtomicU32 , Ordering } ;
1010#[ cfg( not( any( target_arch = "mips" , target_arch = "powerpc" ) ) ) ]
1111use std:: sync:: atomic:: { AtomicI64 , AtomicU64 } ;
1212use std:: sync:: Arc ;
@@ -134,55 +134,81 @@ pub trait Atomic<N> {
134134 fn get ( & self ) -> N ;
135135}
136136
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 {
140139 self . inc_by ( 1 )
141140 }
142141
143- fn inc_by ( & self , v : i64 ) -> i64 {
142+ fn inc_by ( & self , v : i32 ) -> i32 {
144143 self . fetch_add ( v, Ordering :: Relaxed )
145144 }
146145
147- fn dec ( & self ) -> i64 {
146+ fn dec ( & self ) -> i32 {
148147 self . dec_by ( 1 )
149148 }
150149
151- fn dec_by ( & self , v : i64 ) -> i64 {
150+ fn dec_by ( & self , v : i32 ) -> i32 {
152151 self . fetch_sub ( v, Ordering :: Relaxed )
153152 }
154153
155- fn set ( & self , v : i64 ) -> i64 {
154+ fn set ( & self , v : i32 ) -> i32 {
156155 self . swap ( v, Ordering :: Relaxed )
157156 }
158157
159- fn get ( & self ) -> i64 {
158+ fn get ( & self ) -> i32 {
160159 self . load ( Ordering :: Relaxed )
161160 }
162161}
163162
164- impl Atomic < i32 > for AtomicI32 {
165- fn inc ( & self ) -> i32 {
163+ impl Atomic < u32 > for AtomicU32 {
164+ fn inc ( & self ) -> u32 {
166165 self . inc_by ( 1 )
167166 }
168167
169- fn inc_by ( & self , v : i32 ) -> i32 {
168+ fn inc_by ( & self , v : u32 ) -> u32 {
170169 self . fetch_add ( v, Ordering :: Relaxed )
171170 }
172171
173- fn dec ( & self ) -> i32 {
172+ fn dec ( & self ) -> u32 {
174173 self . dec_by ( 1 )
175174 }
176175
177- fn dec_by ( & self , v : i32 ) -> i32 {
176+ fn dec_by ( & self , v : u32 ) -> u32 {
178177 self . fetch_sub ( v, Ordering :: Relaxed )
179178 }
180179
181- fn set ( & self , v : i32 ) -> i32 {
180+ fn set ( & self , v : u32 ) -> u32 {
182181 self . swap ( v, Ordering :: Relaxed )
183182 }
184183
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 {
186212 self . load ( Ordering :: Relaxed )
187213 }
188214}
0 commit comments