@@ -56,7 +56,7 @@ pub(super) trait ITransport {
56
56
57
57
/// Encodes, encrypts, and enqueues a message to the outbound queue. Panics if the connection is
58
58
/// not established yet.
59
- fn enqueue_message < M : Encode + Writeable , Q : PayloadQueuer > ( & mut self , message : & M , output_buffer : & mut Q ) ;
59
+ fn enqueue_message < M : Encode + Writeable , Q : PayloadQueuer , L : Deref > ( & mut self , message : & M , output_buffer : & mut Q , logger : L ) where L :: Target : Logger ;
60
60
}
61
61
62
62
@@ -406,15 +406,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
406
406
}
407
407
408
408
fn do_attempt_write_data ( & self , descriptor : & mut Descriptor , peer : & mut Peer ) {
409
- macro_rules! enqueue_msg {
410
- ( $msg: expr) => {
411
- {
412
- log_trace!( self . logger, "Encoding and sending sync update message of type {} to {}" , $msg. type_id( ) , log_pubkey!( peer. their_node_id. unwrap( ) ) ) ;
413
- peer. transport. enqueue_message( $msg, & mut peer. pending_outbound_buffer)
414
- }
415
- }
416
- }
417
-
418
409
while !peer. pending_outbound_buffer . is_blocked ( ) {
419
410
let queue_space = peer. pending_outbound_buffer . queue_space ( ) ;
420
411
if queue_space > 0 {
@@ -424,12 +415,12 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
424
415
let steps = ( ( queue_space + 2 ) / 3 ) as u8 ;
425
416
let all_messages = self . message_handler . route_handler . get_next_channel_announcements ( c, steps) ;
426
417
for & ( ref announce, ref update_a_option, ref update_b_option) in all_messages. iter ( ) {
427
- enqueue_msg ! ( announce) ;
418
+ peer . transport . enqueue_message ( announce, & mut peer . pending_outbound_buffer , & * self . logger ) ;
428
419
if let & Some ( ref update_a) = update_a_option {
429
- enqueue_msg ! ( update_a) ;
420
+ peer . transport . enqueue_message ( update_a, & mut peer . pending_outbound_buffer , & * self . logger ) ;
430
421
}
431
422
if let & Some ( ref update_b) = update_b_option {
432
- enqueue_msg ! ( update_b) ;
423
+ peer . transport . enqueue_message ( update_b, & mut peer . pending_outbound_buffer , & * self . logger ) ;
433
424
}
434
425
peer. sync_status = InitSyncTracker :: ChannelsSyncing ( announce. contents . short_channel_id + 1 ) ;
435
426
}
@@ -441,7 +432,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
441
432
let steps = queue_space as u8 ;
442
433
let all_messages = self . message_handler . route_handler . get_next_node_announcements ( None , steps) ;
443
434
for msg in all_messages. iter ( ) {
444
- enqueue_msg ! ( msg) ;
435
+ peer . transport . enqueue_message ( msg, & mut peer . pending_outbound_buffer , & * self . logger ) ;
445
436
peer. sync_status = InitSyncTracker :: NodesSyncing ( msg. contents . node_id ) ;
446
437
}
447
438
if all_messages. is_empty ( ) || all_messages. len ( ) != steps as usize {
@@ -453,7 +444,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
453
444
let steps = queue_space as u8 ;
454
445
let all_messages = self . message_handler . route_handler . get_next_node_announcements ( Some ( & key) , steps) ;
455
446
for msg in all_messages. iter ( ) {
456
- enqueue_msg ! ( msg) ;
447
+ peer . transport . enqueue_message ( msg, & mut peer . pending_outbound_buffer , & * self . logger ) ;
457
448
peer. sync_status = InitSyncTracker :: NodesSyncing ( msg. contents . node_id ) ;
458
449
}
459
450
if all_messages. is_empty ( ) || all_messages. len ( ) != steps as usize {
@@ -517,10 +508,9 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
517
508
}
518
509
519
510
/// Append a message to a peer's pending outbound/write buffer, and update the map of peers needing sends accordingly.
520
- fn enqueue_message < M : Encode + Writeable > ( & self , peers_needing_send : & mut HashSet < Descriptor > , peer : & mut Peer , descriptor : Descriptor , message : & M ) {
521
- log_trace ! ( self . logger, "Enqueueing message of type {} to {}" , message. type_id( ) , log_pubkey!( peer. their_node_id. unwrap( ) ) ) ;
522
- peer. transport . enqueue_message ( message, & mut peer. pending_outbound_buffer ) ;
523
- peers_needing_send. insert ( descriptor) ;
511
+ 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 ) {
512
+ transport. enqueue_message ( message, output_buffer, & * self . logger ) ;
513
+ peers_needing_send. insert ( descriptor. clone ( ) ) ;
524
514
}
525
515
526
516
fn do_read_event ( & self , peer_descriptor : & mut Descriptor , data : & [ u8 ] ) -> Result < bool , PeerHandleError > {
@@ -564,7 +554,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
564
554
}
565
555
566
556
let resp = msgs:: Init { features } ;
567
- self . enqueue_message ( & mut peers. peers_needing_send , peer, peer_descriptor . clone ( ) , & resp) ;
557
+ self . enqueue_message ( & mut peers. peers_needing_send , & mut peer. transport , & mut peer . pending_outbound_buffer , peer_descriptor , & resp) ;
568
558
}
569
559
entry. insert ( peer_descriptor. clone ( ) ) ;
570
560
}
@@ -593,7 +583,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
593
583
} ,
594
584
msgs:: ErrorAction :: SendErrorMessage { msg } => {
595
585
log_trace!( self . logger, "Got Err handling message, sending Error message because {}" , e. err) ;
596
- self . enqueue_message( & mut peers. peers_needing_send, peer, peer_descriptor . clone ( ) , & msg) ;
586
+ self . enqueue_message( & mut peers. peers_needing_send, & mut peer. transport , & mut peer . pending_outbound_buffer , peer_descriptor , & msg) ;
597
587
continue ;
598
588
} ,
599
589
}
@@ -675,7 +665,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
675
665
}
676
666
677
667
let resp = msgs:: Init { features } ;
678
- self . enqueue_message ( peers_needing_send, peer, peer_descriptor . clone ( ) , & resp) ;
668
+ self . enqueue_message ( peers_needing_send, & mut peer. transport , & mut peer . pending_outbound_buffer , & peer_descriptor , & resp) ;
679
669
}
680
670
681
671
self . message_handler . chan_handler . peer_connected ( & peer. their_node_id . unwrap ( ) , & msg) ;
@@ -704,7 +694,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
704
694
wire:: Message :: Ping ( msg) => {
705
695
if msg. ponglen < 65532 {
706
696
let resp = msgs:: Pong { byteslen : msg. ponglen } ;
707
- self . enqueue_message ( peers_needing_send, peer, peer_descriptor . clone ( ) , & resp) ;
697
+ self . enqueue_message ( peers_needing_send, & mut peer. transport , & mut peer . pending_outbound_buffer , & peer_descriptor , & resp) ;
708
698
}
709
699
} ,
710
700
wire:: Message :: Pong ( _msg) => {
@@ -856,7 +846,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
856
846
//TODO: Drop the pending channel? (or just let it timeout, but that sucks)
857
847
} ) ;
858
848
if peer. transport . is_connected ( ) {
859
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
849
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
860
850
}
861
851
self . do_attempt_write_data ( & mut descriptor, peer) ;
862
852
} ,
@@ -868,7 +858,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
868
858
//TODO: Drop the pending channel? (or just let it timeout, but that sucks)
869
859
} ) ;
870
860
if peer. transport . is_connected ( ) {
871
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
861
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
872
862
}
873
863
self . do_attempt_write_data ( & mut descriptor, peer) ;
874
864
} ,
@@ -882,7 +872,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
882
872
//they should just throw away this funding transaction
883
873
} ) ;
884
874
if peer. transport . is_connected ( ) {
885
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
875
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
886
876
}
887
877
self . do_attempt_write_data ( & mut descriptor, peer) ;
888
878
} ,
@@ -895,7 +885,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
895
885
//they should just throw away this funding transaction
896
886
} ) ;
897
887
if peer. transport . is_connected ( ) {
898
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
888
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
899
889
}
900
890
self . do_attempt_write_data ( & mut descriptor, peer) ;
901
891
} ,
@@ -907,7 +897,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
907
897
//TODO: Do whatever we're gonna do for handling dropped messages
908
898
} ) ;
909
899
if peer. transport . is_connected ( ) {
910
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
900
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
911
901
}
912
902
self . do_attempt_write_data ( & mut descriptor, peer) ;
913
903
} ,
@@ -920,7 +910,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
920
910
//they should just throw away this funding transaction
921
911
} ) ;
922
912
if peer. transport . is_connected ( ) {
923
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
913
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
924
914
}
925
915
self . do_attempt_write_data ( & mut descriptor, peer) ;
926
916
} ,
@@ -936,21 +926,21 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
936
926
} ) ;
937
927
if peer. transport . is_connected ( ) {
938
928
for msg in update_add_htlcs {
939
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
929
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
940
930
}
941
931
for msg in update_fulfill_htlcs {
942
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
932
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
943
933
}
944
934
for msg in update_fail_htlcs {
945
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
935
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
946
936
}
947
937
for msg in update_fail_malformed_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
if let & Some ( ref msg) = update_fee {
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
- peer. transport . enqueue_message ( commitment_signed, & mut peer. pending_outbound_buffer ) ;
943
+ peer. transport . enqueue_message ( commitment_signed, & mut peer. pending_outbound_buffer , & * self . logger ) ;
954
944
}
955
945
self . do_attempt_write_data ( & mut descriptor, peer) ;
956
946
} ,
@@ -962,7 +952,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
962
952
//TODO: Do whatever we're gonna do for handling dropped messages
963
953
} ) ;
964
954
if peer. transport . is_connected ( ) {
965
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
955
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
966
956
}
967
957
self . do_attempt_write_data ( & mut descriptor, peer) ;
968
958
} ,
@@ -974,7 +964,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
974
964
//TODO: Do whatever we're gonna do for handling dropped messages
975
965
} ) ;
976
966
if peer. transport . is_connected ( ) {
977
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
967
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
978
968
}
979
969
self . do_attempt_write_data ( & mut descriptor, peer) ;
980
970
} ,
@@ -986,7 +976,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
986
976
//TODO: Do whatever we're gonna do for handling dropped messages
987
977
} ) ;
988
978
if peer. transport . is_connected ( ) {
989
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
979
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
990
980
}
991
981
self . do_attempt_write_data ( & mut descriptor, peer) ;
992
982
} ,
@@ -998,7 +988,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
998
988
//TODO: Do whatever we're gonna do for handling dropped messages
999
989
} ) ;
1000
990
if peer. transport . is_connected ( ) {
1001
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
991
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1002
992
}
1003
993
self . do_attempt_write_data ( & mut descriptor, peer) ;
1004
994
} ,
@@ -1019,8 +1009,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1019
1009
}
1020
1010
}
1021
1011
if peer. transport . is_connected ( ) {
1022
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1023
- peer. transport . enqueue_message ( update_msg, & mut peer. pending_outbound_buffer ) ;
1012
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1013
+ peer. transport . enqueue_message ( update_msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1024
1014
}
1025
1015
self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , peer) ;
1026
1016
}
@@ -1035,7 +1025,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1035
1025
continue
1036
1026
}
1037
1027
if peer. transport . is_connected ( ) {
1038
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1028
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1039
1029
}
1040
1030
self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , peer) ;
1041
1031
}
@@ -1050,7 +1040,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1050
1040
continue
1051
1041
}
1052
1042
if peer. transport . is_connected ( ) {
1053
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1043
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1054
1044
}
1055
1045
self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , peer) ;
1056
1046
}
@@ -1070,7 +1060,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1070
1060
log_pubkey!( node_id) ,
1071
1061
msg. data) ;
1072
1062
if peer. transport . is_connected ( ) {
1073
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1063
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1074
1064
}
1075
1065
// This isn't guaranteed to work, but if there is enough free
1076
1066
// room in the send buffer, put the error message there...
@@ -1092,7 +1082,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1092
1082
//TODO: Do whatever we're gonna do for handling dropped messages
1093
1083
} ) ;
1094
1084
if peer. transport . is_connected ( ) {
1095
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer ) ;
1085
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1096
1086
}
1097
1087
self . do_attempt_write_data ( & mut descriptor, peer) ;
1098
1088
} ,
@@ -1178,7 +1168,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
1178
1168
ponglen : 0 ,
1179
1169
byteslen : 64 ,
1180
1170
} ;
1181
- peer. transport . enqueue_message ( & ping, & mut peer. pending_outbound_buffer ) ;
1171
+ peer. transport . enqueue_message ( & ping, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1182
1172
needs_to_write_data = true ;
1183
1173
}
1184
1174
0 commit comments