@@ -261,12 +261,8 @@ pub struct OnionMessenger<
261
261
async_payments_handler : APH ,
262
262
custom_handler : CMH ,
263
263
intercept_messages_for_offline_peers : bool ,
264
- pending_events : Mutex < PendingEvents > ,
265
- }
266
-
267
- struct PendingEvents {
268
- intercepted_msgs : Vec < Event > ,
269
- peer_connecteds : Vec < Event > ,
264
+ pending_intercepted_msgs_events : Mutex < Vec < Event > > ,
265
+ pending_peer_connected_events : Mutex < Vec < Event > > ,
270
266
}
271
267
272
268
/// [`OnionMessage`]s buffered to be sent.
@@ -1095,10 +1091,8 @@ where
1095
1091
async_payments_handler,
1096
1092
custom_handler,
1097
1093
intercept_messages_for_offline_peers,
1098
- pending_events : Mutex :: new ( PendingEvents {
1099
- intercepted_msgs : Vec :: new ( ) ,
1100
- peer_connecteds : Vec :: new ( ) ,
1101
- } ) ,
1094
+ pending_intercepted_msgs_events : Mutex :: new ( Vec :: new ( ) ) ,
1095
+ pending_peer_connected_events : Mutex :: new ( Vec :: new ( ) ) ,
1102
1096
}
1103
1097
}
1104
1098
@@ -1316,14 +1310,15 @@ where
1316
1310
1317
1311
fn enqueue_intercepted_event ( & self , event : Event ) {
1318
1312
const MAX_EVENTS_BUFFER_SIZE : usize = ( 1 << 10 ) * 256 ;
1319
- let mut pending_events = self . pending_events . lock ( ) . unwrap ( ) ;
1320
- let total_buffered_bytes: usize =
1321
- pending_events. intercepted_msgs . iter ( ) . map ( |ev| ev. serialized_length ( ) ) . sum ( ) ;
1313
+ let mut pending_intercepted_msgs_events =
1314
+ self . pending_intercepted_msgs_events . lock ( ) . unwrap ( ) ;
1315
+ let total_buffered_bytes: usize = pending_intercepted_msgs_events. iter ( )
1316
+ . map ( |ev| ev. serialized_length ( ) ) . sum ( ) ;
1322
1317
if total_buffered_bytes >= MAX_EVENTS_BUFFER_SIZE {
1323
1318
log_trace ! ( self . logger, "Dropping event {:?}: buffer full" , event) ;
1324
1319
return
1325
1320
}
1326
- pending_events . intercepted_msgs . push ( event) ;
1321
+ pending_intercepted_msgs_events . push ( event) ;
1327
1322
}
1328
1323
1329
1324
/// Processes any events asynchronously using the given handler.
@@ -1339,9 +1334,12 @@ where
1339
1334
let mut intercepted_msgs = Vec :: new ( ) ;
1340
1335
let mut peer_connecteds = Vec :: new ( ) ;
1341
1336
{
1342
- let mut pending_events = self . pending_events . lock ( ) . unwrap ( ) ;
1343
- core:: mem:: swap ( & mut pending_events. intercepted_msgs , & mut intercepted_msgs) ;
1344
- core:: mem:: swap ( & mut pending_events. peer_connecteds , & mut peer_connecteds) ;
1337
+ let mut pending_intercepted_msgs_events =
1338
+ self . pending_intercepted_msgs_events . lock ( ) . unwrap ( ) ;
1339
+ let mut pending_peer_connected_events =
1340
+ self . pending_peer_connected_events . lock ( ) . unwrap ( ) ;
1341
+ core:: mem:: swap ( & mut * pending_intercepted_msgs_events, & mut intercepted_msgs) ;
1342
+ core:: mem:: swap ( & mut * pending_peer_connected_events, & mut peer_connecteds) ;
1345
1343
}
1346
1344
1347
1345
let mut futures = Vec :: with_capacity ( intercepted_msgs. len ( ) ) ;
@@ -1417,18 +1415,19 @@ where
1417
1415
}
1418
1416
let mut events = Vec :: new ( ) ;
1419
1417
{
1420
- let mut pending_events = self . pending_events . lock ( ) . unwrap ( ) ;
1418
+ let mut pending_intercepted_msgs_events = self . pending_intercepted_msgs_events . lock ( ) . unwrap ( ) ;
1419
+ let mut pending_peer_connected_events = self . pending_peer_connected_events . lock ( ) . unwrap ( ) ;
1421
1420
#[ cfg( debug_assertions) ] {
1422
- for ev in pending_events . intercepted_msgs . iter ( ) {
1421
+ for ev in pending_intercepted_msgs_events . iter ( ) {
1423
1422
if let Event :: OnionMessageIntercepted { .. } = ev { } else { panic ! ( ) ; }
1424
1423
}
1425
- for ev in pending_events . peer_connecteds . iter ( ) {
1424
+ for ev in pending_peer_connected_events . iter ( ) {
1426
1425
if let Event :: OnionMessagePeerConnected { .. } = ev { } else { panic ! ( ) ; }
1427
1426
}
1428
1427
}
1429
- core:: mem:: swap ( & mut pending_events . intercepted_msgs , & mut events) ;
1430
- events. append ( & mut pending_events . peer_connecteds ) ;
1431
- pending_events . peer_connecteds . shrink_to ( 10 ) ; // Limit total heap usage
1428
+ core:: mem:: swap ( & mut * pending_intercepted_msgs_events , & mut events) ;
1429
+ events. append ( & mut pending_peer_connected_events ) ;
1430
+ pending_peer_connected_events . shrink_to ( 10 ) ; // Limit total heap usage
1432
1431
}
1433
1432
for ev in events {
1434
1433
handler. handle_event ( ev) ;
@@ -1558,7 +1557,9 @@ where
1558
1557
. or_insert_with ( || OnionMessageRecipient :: ConnectedPeer ( VecDeque :: new ( ) ) )
1559
1558
. mark_connected ( ) ;
1560
1559
if self . intercept_messages_for_offline_peers {
1561
- self . pending_events . lock ( ) . unwrap ( ) . peer_connecteds . push (
1560
+ let mut pending_peer_connected_events =
1561
+ self . pending_peer_connected_events . lock ( ) . unwrap ( ) ;
1562
+ pending_peer_connected_events. push (
1562
1563
Event :: OnionMessagePeerConnected { peer_node_id : * their_node_id }
1563
1564
) ;
1564
1565
}
0 commit comments