@@ -65,7 +65,7 @@ pub(super) trait ITransport {
65
65
66
66
/// Encodes, encrypts, and enqueues a message to the outbound queue. Panics if the connection is
67
67
/// not established yet.
68
- fn enqueue_message < M : Encode + Writeable , Q : PayloadQueuer > ( & mut self , message : & M , output_buffer : & mut Q ) ;
68
+ fn enqueue_message < M : Encode + Writeable , Q : PayloadQueuer , L : Deref > ( & mut self , message : & M , output_buffer : & mut Q , logger : L ) where L :: Target : Logger ;
69
69
}
70
70
71
71
@@ -415,15 +415,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
415
415
}
416
416
417
417
fn do_attempt_write_data ( & self , descriptor : & mut Descriptor , peer : & mut Peer ) {
418
- macro_rules! enqueue_msg {
419
- ( $msg: expr) => {
420
- {
421
- log_trace!( self . logger, "Encoding and sending sync update message of type {} to {}" , $msg. type_id( ) , log_pubkey!( peer. their_node_id. unwrap( ) ) ) ;
422
- peer. transport. enqueue_message( $msg, & mut peer. pending_outbound_buffer)
423
- }
424
- }
425
- }
426
-
427
418
while !peer. pending_outbound_buffer . is_blocked ( ) {
428
419
let queue_space = peer. pending_outbound_buffer . queue_space ( ) ;
429
420
if queue_space > 0 {
@@ -433,12 +424,12 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
433
424
let steps = ( ( queue_space + 2 ) / 3 ) as u8 ;
434
425
let all_messages = self . message_handler . route_handler . get_next_channel_announcements ( c, steps) ;
435
426
for & ( ref announce, ref update_a_option, ref update_b_option) in all_messages. iter ( ) {
436
- enqueue_msg ! ( announce) ;
427
+ peer . transport . enqueue_message ( announce, & mut peer . pending_outbound_buffer , & * self . logger ) ;
437
428
if let & Some ( ref update_a) = update_a_option {
438
- enqueue_msg ! ( update_a) ;
429
+ peer . transport . enqueue_message ( update_a, & mut peer . pending_outbound_buffer , & * self . logger ) ;
439
430
}
440
431
if let & Some ( ref update_b) = update_b_option {
441
- enqueue_msg ! ( update_b) ;
432
+ peer . transport . enqueue_message ( update_b, & mut peer . pending_outbound_buffer , & * self . logger ) ;
442
433
}
443
434
peer. sync_status = InitSyncTracker :: ChannelsSyncing ( announce. contents . short_channel_id + 1 ) ;
444
435
}
@@ -450,7 +441,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
450
441
let steps = queue_space as u8 ;
451
442
let all_messages = self . message_handler . route_handler . get_next_node_announcements ( None , steps) ;
452
443
for msg in all_messages. iter ( ) {
453
- enqueue_msg ! ( msg) ;
444
+ peer . transport . enqueue_message ( msg, & mut peer . pending_outbound_buffer , & * self . logger ) ;
454
445
peer. sync_status = InitSyncTracker :: NodesSyncing ( msg. contents . node_id ) ;
455
446
}
456
447
if all_messages. is_empty ( ) || all_messages. len ( ) != steps as usize {
@@ -462,7 +453,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
462
453
let steps = queue_space as u8 ;
463
454
let all_messages = self . message_handler . route_handler . get_next_node_announcements ( Some ( & key) , steps) ;
464
455
for msg in all_messages. iter ( ) {
465
- enqueue_msg ! ( msg) ;
456
+ peer . transport . enqueue_message ( msg, & mut peer . pending_outbound_buffer , & * self . logger ) ;
466
457
peer. sync_status = InitSyncTracker :: NodesSyncing ( msg. contents . node_id ) ;
467
458
}
468
459
if all_messages. is_empty ( ) || all_messages. len ( ) != steps as usize {
@@ -526,10 +517,9 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
526
517
}
527
518
528
519
/// Append a message to a peer's pending outbound/write buffer, and update the map of peers needing sends accordingly.
529
- fn enqueue_message < M : Encode + Writeable > ( & self , peers_needing_send : & mut HashSet < Descriptor > , peer : & mut Peer , descriptor : Descriptor , message : & M ) {
530
- log_trace ! ( self . logger, "Enqueueing message of type {} to {}" , message. type_id( ) , log_pubkey!( peer. their_node_id. unwrap( ) ) ) ;
531
- peer. transport . enqueue_message ( message, & mut peer. pending_outbound_buffer ) ;
532
- peers_needing_send. insert ( descriptor) ;
520
+ fn enqueue_message < M : Encode + Writeable > ( & self , peers_needing_send : & mut HashSet < Descriptor > , transport : & mut impl ITransport , output_buffer : & mut impl PayloadQueuer , descriptor : & Descriptor , message : & M ) {
521
+ transport. enqueue_message ( message, output_buffer, & * self . logger ) ;
522
+ peers_needing_send. insert ( descriptor. clone ( ) ) ;
533
523
}
534
524
535
525
fn do_read_event ( & self , peer_descriptor : & mut Descriptor , data : & [ u8 ] ) -> Result < bool , PeerHandleError > {
@@ -573,7 +563,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
573
563
}
574
564
575
565
let resp = msgs:: Init { features } ;
576
- self . enqueue_message ( & mut peers. peers_needing_send , peer, peer_descriptor . clone ( ) , & resp) ;
566
+ self . enqueue_message ( & mut peers. peers_needing_send , & mut peer. transport , & mut peer . pending_outbound_buffer , peer_descriptor , & resp) ;
577
567
}
578
568
entry. insert ( peer_descriptor. clone ( ) ) ;
579
569
}
@@ -602,7 +592,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
602
592
} ,
603
593
msgs:: ErrorAction :: SendErrorMessage { msg } => {
604
594
log_trace!( self . logger, "Got Err handling message, sending Error message because {}" , e. err) ;
605
- self . enqueue_message( & mut peers. peers_needing_send, peer, peer_descriptor . clone ( ) , & msg) ;
595
+ self . enqueue_message( & mut peers. peers_needing_send, & mut peer. transport , & mut peer . pending_outbound_buffer , peer_descriptor , & msg) ;
606
596
continue ;
607
597
} ,
608
598
}
@@ -684,7 +674,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
684
674
}
685
675
686
676
let resp = msgs:: Init { features } ;
687
- self . enqueue_message ( peers_needing_send, peer, peer_descriptor . clone ( ) , & resp) ;
677
+ self . enqueue_message ( peers_needing_send, & mut peer. transport , & mut peer . pending_outbound_buffer , & peer_descriptor , & resp) ;
688
678
}
689
679
690
680
self . message_handler . chan_handler . peer_connected ( & peer. their_node_id . unwrap ( ) , & msg) ;
@@ -713,7 +703,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
713
703
wire:: Message :: Ping ( msg) => {
714
704
if msg. ponglen < 65532 {
715
705
let resp = msgs:: Pong { byteslen : msg. ponglen } ;
716
- self . enqueue_message ( peers_needing_send, peer, peer_descriptor . clone ( ) , & resp) ;
706
+ self . enqueue_message ( peers_needing_send, & mut peer. transport , & mut peer . pending_outbound_buffer , & peer_descriptor , & resp) ;
717
707
}
718
708
} ,
719
709
wire:: Message :: Pong ( _msg) => {
@@ -865,7 +855,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
865
855
//TODO: Drop the pending channel? (or just let it timeout, but that sucks)
866
856
} ) ;
867
857
if peer. transport . is_connected ( ) {
868
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
858
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
869
859
}
870
860
self . do_attempt_write_data ( & mut descriptor, peer) ;
871
861
} ,
@@ -877,7 +867,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
877
867
//TODO: Drop the pending channel? (or just let it timeout, but that sucks)
878
868
} ) ;
879
869
if peer. transport . is_connected ( ) {
880
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
870
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
881
871
}
882
872
self . do_attempt_write_data ( & mut descriptor, peer) ;
883
873
} ,
@@ -891,7 +881,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
891
881
//they should just throw away this funding transaction
892
882
} ) ;
893
883
if peer. transport . is_connected ( ) {
894
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
884
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
895
885
}
896
886
self . do_attempt_write_data ( & mut descriptor, peer) ;
897
887
} ,
@@ -904,7 +894,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
904
894
//they should just throw away this funding transaction
905
895
} ) ;
906
896
if peer. transport . is_connected ( ) {
907
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
897
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
908
898
}
909
899
self . do_attempt_write_data ( & mut descriptor, peer) ;
910
900
} ,
@@ -916,7 +906,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
916
906
//TODO: Do whatever we're gonna do for handling dropped messages
917
907
} ) ;
918
908
if peer. transport . is_connected ( ) {
919
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
909
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
920
910
}
921
911
self . do_attempt_write_data ( & mut descriptor, peer) ;
922
912
} ,
@@ -929,7 +919,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
929
919
//they should just throw away this funding transaction
930
920
} ) ;
931
921
if peer. transport . is_connected ( ) {
932
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
922
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
933
923
}
934
924
self . do_attempt_write_data ( & mut descriptor, peer) ;
935
925
} ,
@@ -945,21 +935,21 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
945
935
} ) ;
946
936
if peer. transport . is_connected ( ) {
947
937
for msg in update_add_htlcs {
948
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
938
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
949
939
}
950
940
for msg in update_fulfill_htlcs {
951
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
941
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
952
942
}
953
943
for msg in update_fail_htlcs {
954
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
944
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
955
945
}
956
946
for msg in update_fail_malformed_htlcs {
957
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
947
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
958
948
}
959
949
if let & Some ( ref msg) = update_fee {
960
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
950
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
961
951
}
962
- peer. transport . enqueue_message ( commitment_signed, & mut peer. pending_outbound_buffer ) ;
952
+ peer. transport . enqueue_message ( commitment_signed, & mut peer. pending_outbound_buffer , & * self . logger ) ;
963
953
}
964
954
self . do_attempt_write_data ( & mut descriptor, peer) ;
965
955
} ,
@@ -971,7 +961,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
971
961
//TODO: Do whatever we're gonna do for handling dropped messages
972
962
} ) ;
973
963
if peer. transport . is_connected ( ) {
974
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
964
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
975
965
}
976
966
self . do_attempt_write_data ( & mut descriptor, peer) ;
977
967
} ,
@@ -983,7 +973,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
983
973
//TODO: Do whatever we're gonna do for handling dropped messages
984
974
} ) ;
985
975
if peer. transport . is_connected ( ) {
986
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
976
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
987
977
}
988
978
self . do_attempt_write_data ( & mut descriptor, peer) ;
989
979
} ,
@@ -995,7 +985,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
995
985
//TODO: Do whatever we're gonna do for handling dropped messages
996
986
} ) ;
997
987
if peer. transport . is_connected ( ) {
998
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
988
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
999
989
}
1000
990
self . do_attempt_write_data ( & mut descriptor, peer) ;
1001
991
} ,
@@ -1007,7 +997,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1007
997
//TODO: Do whatever we're gonna do for handling dropped messages
1008
998
} ) ;
1009
999
if peer. transport . is_connected ( ) {
1010
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1000
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1011
1001
}
1012
1002
self . do_attempt_write_data ( & mut descriptor, peer) ;
1013
1003
} ,
@@ -1028,8 +1018,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1028
1018
}
1029
1019
}
1030
1020
if peer. transport . is_connected ( ) {
1031
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1032
- peer. transport . enqueue_message ( update_msg, & mut peer. pending_outbound_buffer ) ;
1021
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1022
+ peer. transport . enqueue_message ( update_msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1033
1023
}
1034
1024
self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , peer) ;
1035
1025
}
@@ -1044,7 +1034,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1044
1034
continue
1045
1035
}
1046
1036
if peer. transport . is_connected ( ) {
1047
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1037
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1048
1038
}
1049
1039
self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , peer) ;
1050
1040
}
@@ -1059,7 +1049,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1059
1049
continue
1060
1050
}
1061
1051
if peer. transport . is_connected ( ) {
1062
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1052
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1063
1053
}
1064
1054
self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , peer) ;
1065
1055
}
@@ -1079,7 +1069,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1079
1069
log_pubkey!( node_id) ,
1080
1070
msg. data) ;
1081
1071
if peer. transport . is_connected ( ) {
1082
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1072
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1083
1073
}
1084
1074
// This isn't guaranteed to work, but if there is enough free
1085
1075
// room in the send buffer, put the error message there...
@@ -1101,7 +1091,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1101
1091
//TODO: Do whatever we're gonna do for handling dropped messages
1102
1092
} ) ;
1103
1093
if peer. transport . is_connected ( ) {
1104
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1094
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1105
1095
}
1106
1096
self . do_attempt_write_data ( & mut descriptor, peer) ;
1107
1097
} ,
@@ -1187,7 +1177,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1187
1177
ponglen : 0 ,
1188
1178
byteslen : 64 ,
1189
1179
} ;
1190
- peer. transport . enqueue_message ( & ping, & mut peer. pending_outbound_buffer ) ;
1180
+ peer. transport . enqueue_message ( & ping, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1191
1181
needs_to_write_data = true ;
1192
1182
}
1193
1183
0 commit comments