@@ -55,10 +55,15 @@ pub const DISABLED_BAKING_TRACE_DIR: DirByteLimit = 0;
55
55
pub const BANKING_TRACE_DIR_DEFAULT_BYTE_LIMIT : DirByteLimit =
56
56
TRACE_FILE_DEFAULT_ROTATE_BYTE_THRESHOLD * TRACE_FILE_ROTATE_COUNT ;
57
57
58
- #[ allow( clippy:: type_complexity) ]
58
+ #[ derive( Clone , Debug ) ]
59
+ struct ActiveTracer {
60
+ trace_sender : Sender < TimedTracedEvent > ,
61
+ exit : Arc < AtomicBool > ,
62
+ }
63
+
59
64
#[ derive( Debug ) ]
60
65
pub struct BankingTracer {
61
- enabled_tracer : Option < ( Sender < TimedTracedEvent > , Arc < AtomicBool > ) > ,
66
+ active_tracer : Option < ActiveTracer > ,
62
67
}
63
68
64
69
#[ derive( Serialize , Deserialize , Debug ) ]
@@ -200,7 +205,7 @@ impl BankingTracer {
200
205
201
206
Ok ( (
202
207
Arc :: new ( Self {
203
- enabled_tracer : Some ( ( trace_sender, exit) ) ,
208
+ active_tracer : Some ( ActiveTracer { trace_sender, exit } ) ,
204
209
} ) ,
205
210
Some ( tracer_thread) ,
206
211
) )
@@ -210,21 +215,16 @@ impl BankingTracer {
210
215
211
216
pub fn new_disabled ( ) -> Arc < Self > {
212
217
Arc :: new ( Self {
213
- enabled_tracer : None ,
218
+ active_tracer : None ,
214
219
} )
215
220
}
216
221
217
222
pub fn is_enabled ( & self ) -> bool {
218
- self . enabled_tracer . is_some ( )
223
+ self . active_tracer . is_some ( )
219
224
}
220
225
221
226
fn create_channel ( & self , label : ChannelLabel ) -> ( BankingPacketSender , BankingPacketReceiver ) {
222
- Self :: channel (
223
- label,
224
- self . enabled_tracer
225
- . as_ref ( )
226
- . map ( |( sender, exit) | ( sender. clone ( ) , exit. clone ( ) ) ) ,
227
- )
227
+ Self :: channel ( label, self . active_tracer . as_ref ( ) . cloned ( ) )
228
228
}
229
229
230
230
pub fn create_channel_non_vote ( & self ) -> ( BankingPacketSender , BankingPacketReceiver ) {
@@ -249,9 +249,9 @@ impl BankingTracer {
249
249
}
250
250
251
251
fn trace_event ( & self , on_trace : impl Fn ( ) -> TimedTracedEvent ) {
252
- if let Some ( ( sender , exit) ) = & self . enabled_tracer {
252
+ if let Some ( ActiveTracer { trace_sender , exit } ) = & self . active_tracer {
253
253
if !exit. load ( Ordering :: Relaxed ) {
254
- sender
254
+ trace_sender
255
255
. send ( on_trace ( ) )
256
256
. expect ( "active tracer thread unless exited" ) ;
257
257
}
@@ -264,10 +264,10 @@ impl BankingTracer {
264
264
265
265
fn channel (
266
266
label : ChannelLabel ,
267
- trace_sender : Option < ( Sender < TimedTracedEvent > , Arc < AtomicBool > ) > ,
267
+ active_tracer : Option < ActiveTracer > ,
268
268
) -> ( TracedSender , Receiver < BankingPacketBatch > ) {
269
269
let ( sender, receiver) = unbounded ( ) ;
270
- ( TracedSender :: new ( label, sender, trace_sender ) , receiver)
270
+ ( TracedSender :: new ( label, sender, active_tracer ) , receiver)
271
271
}
272
272
273
273
pub fn ensure_cleanup_path ( path : & PathBuf ) -> Result < ( ) , io:: Error > {
@@ -327,24 +327,24 @@ impl BankingTracer {
327
327
pub struct TracedSender {
328
328
label : ChannelLabel ,
329
329
sender : Sender < BankingPacketBatch > ,
330
- trace_sender : Option < ( Sender < TimedTracedEvent > , Arc < AtomicBool > ) > ,
330
+ active_tracer : Option < ActiveTracer > ,
331
331
}
332
332
333
333
impl TracedSender {
334
334
fn new (
335
335
label : ChannelLabel ,
336
336
sender : Sender < BankingPacketBatch > ,
337
- trace_sender : Option < ( Sender < TimedTracedEvent > , Arc < AtomicBool > ) > ,
337
+ active_tracer : Option < ActiveTracer > ,
338
338
) -> Self {
339
339
Self {
340
340
label,
341
341
sender,
342
- trace_sender ,
342
+ active_tracer ,
343
343
}
344
344
}
345
345
346
346
pub fn send ( & self , batch : BankingPacketBatch ) -> Result < ( ) , SendError < BankingPacketBatch > > {
347
- if let Some ( ( trace_sender, exit) ) = & self . trace_sender {
347
+ if let Some ( ActiveTracer { trace_sender, exit } ) = & self . active_tracer {
348
348
if !exit. load ( Ordering :: Relaxed ) {
349
349
trace_sender
350
350
. send ( TimedTracedEvent (
0 commit comments