@@ -260,12 +260,8 @@ pub struct OnionMessenger<
260
260
async_payments_handler : APH ,
261
261
custom_handler : CMH ,
262
262
intercept_messages_for_offline_peers : bool ,
263
- pending_events : Mutex < PendingEvents > ,
264
- }
265
-
266
- struct PendingEvents {
267
- intercepted_msgs : Vec < Event > ,
268
- peer_connecteds : Vec < Event > ,
263
+ pending_intercepted_msgs_events : Mutex < Vec < Event > > ,
264
+ pending_peer_connected_events : Mutex < Vec < Event > > ,
269
265
}
270
266
271
267
/// [`OnionMessage`]s buffered to be sent.
@@ -1082,10 +1078,8 @@ where
1082
1078
async_payments_handler,
1083
1079
custom_handler,
1084
1080
intercept_messages_for_offline_peers,
1085
- pending_events : Mutex :: new ( PendingEvents {
1086
- intercepted_msgs : Vec :: new ( ) ,
1087
- peer_connecteds : Vec :: new ( ) ,
1088
- } ) ,
1081
+ pending_intercepted_msgs_events : Mutex :: new ( Vec :: new ( ) ) ,
1082
+ pending_peer_connected_events : Mutex :: new ( Vec :: new ( ) ) ,
1089
1083
}
1090
1084
}
1091
1085
@@ -1305,14 +1299,15 @@ where
1305
1299
1306
1300
fn enqueue_intercepted_event ( & self , event : Event ) {
1307
1301
const MAX_EVENTS_BUFFER_SIZE : usize = ( 1 << 10 ) * 256 ;
1308
- let mut pending_events = self . pending_events . lock ( ) . unwrap ( ) ;
1309
- let total_buffered_bytes: usize =
1310
- pending_events. intercepted_msgs . iter ( ) . map ( |ev| ev. serialized_length ( ) ) . sum ( ) ;
1302
+ let mut pending_intercepted_msgs_events =
1303
+ self . pending_intercepted_msgs_events . lock ( ) . unwrap ( ) ;
1304
+ let total_buffered_bytes: usize = pending_intercepted_msgs_events. iter ( )
1305
+ . map ( |ev| ev. serialized_length ( ) ) . sum ( ) ;
1311
1306
if total_buffered_bytes >= MAX_EVENTS_BUFFER_SIZE {
1312
1307
log_trace ! ( self . logger, "Dropping event {:?}: buffer full" , event) ;
1313
1308
return
1314
1309
}
1315
- pending_events . intercepted_msgs . push ( event) ;
1310
+ pending_intercepted_msgs_events . push ( event) ;
1316
1311
}
1317
1312
1318
1313
/// Processes any events asynchronously using the given handler.
@@ -1328,9 +1323,12 @@ where
1328
1323
let mut intercepted_msgs = Vec :: new ( ) ;
1329
1324
let mut peer_connecteds = Vec :: new ( ) ;
1330
1325
{
1331
- let mut pending_events = self . pending_events . lock ( ) . unwrap ( ) ;
1332
- core:: mem:: swap ( & mut pending_events. intercepted_msgs , & mut intercepted_msgs) ;
1333
- core:: mem:: swap ( & mut pending_events. peer_connecteds , & mut peer_connecteds) ;
1326
+ let mut pending_intercepted_msgs_events =
1327
+ self . pending_intercepted_msgs_events . lock ( ) . unwrap ( ) ;
1328
+ let mut pending_peer_connected_events =
1329
+ self . pending_peer_connected_events . lock ( ) . unwrap ( ) ;
1330
+ core:: mem:: swap ( & mut * pending_intercepted_msgs_events, & mut intercepted_msgs) ;
1331
+ core:: mem:: swap ( & mut * pending_peer_connected_events, & mut peer_connecteds) ;
1334
1332
}
1335
1333
1336
1334
let mut futures = Vec :: with_capacity ( intercepted_msgs. len ( ) ) ;
@@ -1406,18 +1404,19 @@ where
1406
1404
}
1407
1405
let mut events = Vec :: new ( ) ;
1408
1406
{
1409
- let mut pending_events = self . pending_events . lock ( ) . unwrap ( ) ;
1407
+ let mut pending_intercepted_msgs_events = self . pending_intercepted_msgs_events . lock ( ) . unwrap ( ) ;
1408
+ let mut pending_peer_connected_events = self . pending_peer_connected_events . lock ( ) . unwrap ( ) ;
1410
1409
#[ cfg( debug_assertions) ] {
1411
- for ev in pending_events . intercepted_msgs . iter ( ) {
1410
+ for ev in pending_intercepted_msgs_events . iter ( ) {
1412
1411
if let Event :: OnionMessageIntercepted { .. } = ev { } else { panic ! ( ) ; }
1413
1412
}
1414
- for ev in pending_events . peer_connecteds . iter ( ) {
1413
+ for ev in pending_peer_connected_events . iter ( ) {
1415
1414
if let Event :: OnionMessagePeerConnected { .. } = ev { } else { panic ! ( ) ; }
1416
1415
}
1417
1416
}
1418
- core:: mem:: swap ( & mut pending_events . intercepted_msgs , & mut events) ;
1419
- events. append ( & mut pending_events . peer_connecteds ) ;
1420
- pending_events . peer_connecteds . shrink_to ( 10 ) ; // Limit total heap usage
1417
+ core:: mem:: swap ( & mut * pending_intercepted_msgs_events , & mut events) ;
1418
+ events. append ( & mut pending_peer_connected_events ) ;
1419
+ pending_peer_connected_events . shrink_to ( 10 ) ; // Limit total heap usage
1421
1420
}
1422
1421
for ev in events {
1423
1422
handler. handle_event ( ev) ;
@@ -1533,7 +1532,9 @@ where
1533
1532
. or_insert_with ( || OnionMessageRecipient :: ConnectedPeer ( VecDeque :: new ( ) ) )
1534
1533
. mark_connected ( ) ;
1535
1534
if self . intercept_messages_for_offline_peers {
1536
- self . pending_events . lock ( ) . unwrap ( ) . peer_connecteds . push (
1535
+ let mut pending_peer_connected_events =
1536
+ self . pending_peer_connected_events . lock ( ) . unwrap ( ) ;
1537
+ pending_peer_connected_events. push (
1537
1538
Event :: OnionMessagePeerConnected { peer_node_id : * their_node_id }
1538
1539
) ;
1539
1540
}
0 commit comments