1- //! TCP connection management.
1+ //! Dash peer connection management.
22
33use std:: collections:: HashMap ;
44use std:: net:: SocketAddr ;
@@ -23,8 +23,8 @@ struct ConnectionState {
2323 framing_buffer : Vec < u8 > ,
2424}
2525
26- /// TCP connection to a Dash peer
27- pub struct TcpConnection {
26+ /// Dash P2P peer
27+ pub struct Peer {
2828 address : SocketAddr ,
2929 // Use a single mutex to protect both the write stream and read buffer
3030 // This ensures no concurrent access to the underlying socket
@@ -38,23 +38,23 @@ pub struct TcpConnection {
3838 last_pong_received : Option < SystemTime > ,
3939 pending_pings : HashMap < u64 , SystemTime > , // nonce -> sent_time
4040 // Peer information from Version message
41- peer_version : Option < u32 > ,
42- peer_services : Option < u64 > ,
43- peer_user_agent : Option < String > ,
44- peer_best_height : Option < u32 > ,
45- peer_relay : Option < bool > ,
46- peer_prefers_headers2 : bool ,
47- peer_sent_sendheaders2 : bool ,
41+ version : Option < u32 > ,
42+ services : Option < u64 > ,
43+ user_agent : Option < String > ,
44+ best_height : Option < u32 > ,
45+ relay : Option < bool > ,
46+ prefers_headers2 : bool ,
47+ sent_sendheaders2 : bool ,
4848 // Basic telemetry for resync events
4949 consecutive_resyncs : u32 ,
5050}
5151
52- impl TcpConnection {
52+ impl Peer {
5353 /// Get the remote peer socket address.
5454 pub fn address ( & self ) -> SocketAddr {
5555 self . address
5656 }
57- /// Create a new TCP connection to the given address .
57+ /// Create a new peer .
5858 pub fn new ( address : SocketAddr , timeout : Duration , network : Network ) -> Self {
5959 Self {
6060 address,
@@ -66,13 +66,13 @@ impl TcpConnection {
6666 last_ping_sent : None ,
6767 last_pong_received : None ,
6868 pending_pings : HashMap :: new ( ) ,
69- peer_version : None ,
70- peer_services : None ,
71- peer_user_agent : None ,
72- peer_best_height : None ,
73- peer_relay : None ,
74- peer_prefers_headers2 : false ,
75- peer_sent_sendheaders2 : false ,
69+ version : None ,
70+ services : None ,
71+ user_agent : None ,
72+ best_height : None ,
73+ relay : None ,
74+ prefers_headers2 : false ,
75+ sent_sendheaders2 : false ,
7676 consecutive_resyncs : 0 ,
7777 }
7878 }
@@ -113,13 +113,13 @@ impl TcpConnection {
113113 last_ping_sent : None ,
114114 last_pong_received : None ,
115115 pending_pings : HashMap :: new ( ) ,
116- peer_version : None ,
117- peer_services : None ,
118- peer_user_agent : None ,
119- peer_best_height : None ,
120- peer_relay : None ,
121- peer_prefers_headers2 : false ,
122- peer_sent_sendheaders2 : false ,
116+ version : None ,
117+ services : None ,
118+ user_agent : None ,
119+ best_height : None ,
120+ relay : None ,
121+ prefers_headers2 : false ,
122+ sent_sendheaders2 : false ,
123123 consecutive_resyncs : 0 ,
124124 } )
125125 }
@@ -249,11 +249,11 @@ impl TcpConnection {
249249 }
250250
251251 // All validations passed, update peer info
252- self . peer_version = Some ( version_msg. version ) ;
253- self . peer_services = Some ( version_msg. services . as_u64 ( ) ) ;
254- self . peer_user_agent = Some ( version_msg. user_agent . clone ( ) ) ;
255- self . peer_best_height = Some ( version_msg. start_height as u32 ) ;
256- self . peer_relay = Some ( version_msg. relay ) ;
252+ self . version = Some ( version_msg. version ) ;
253+ self . services = Some ( version_msg. services . as_u64 ( ) ) ;
254+ self . user_agent = Some ( version_msg. user_agent . clone ( ) ) ;
255+ self . best_height = Some ( version_msg. start_height as u32 ) ;
256+ self . relay = Some ( version_msg. relay ) ;
257257
258258 tracing:: info!(
259259 "Updated peer info for {}: height={}, version={}, services={:?}" ,
@@ -690,11 +690,11 @@ impl TcpConnection {
690690 address : self . address ,
691691 connected : self . is_connected ( ) ,
692692 last_seen : self . connected_at . unwrap_or ( SystemTime :: UNIX_EPOCH ) ,
693- version : self . peer_version ,
694- services : self . peer_services ,
695- user_agent : self . peer_user_agent . clone ( ) ,
696- best_height : self . peer_best_height ,
697- wants_dsq_messages : None , // We don't track this in TcpConnection yet
693+ version : self . version ,
694+ services : self . services ,
695+ user_agent : self . user_agent . clone ( ) ,
696+ best_height : self . best_height ,
697+ wants_dsq_messages : None , // We don't track this yet
698698 has_sent_headers2 : false , // Will be tracked by the connection pool
699699 }
700700 }
@@ -803,20 +803,20 @@ impl TcpConnection {
803803
804804 /// Set that peer prefers headers2.
805805 pub fn set_prefers_headers2 ( & mut self , prefers : bool ) {
806- self . peer_prefers_headers2 = prefers;
806+ self . prefers_headers2 = prefers;
807807 if prefers {
808808 tracing:: info!( "Peer {} prefers headers2 compression" , self . address) ;
809809 }
810810 }
811811
812812 /// Check if peer prefers headers2.
813813 pub fn prefers_headers2 ( & self ) -> bool {
814- self . peer_prefers_headers2
814+ self . prefers_headers2
815815 }
816816
817817 /// Set that peer sent us SendHeaders2.
818818 pub fn set_peer_sent_sendheaders2 ( & mut self , sent : bool ) {
819- self . peer_sent_sendheaders2 = sent;
819+ self . sent_sendheaders2 = sent;
820820 if sent {
821821 tracing:: info!(
822822 "Peer {} sent SendHeaders2 - they will send compressed headers" ,
@@ -827,15 +827,15 @@ impl TcpConnection {
827827
828828 /// Check if peer sent us SendHeaders2.
829829 pub fn peer_sent_sendheaders2 ( & self ) -> bool {
830- self . peer_sent_sendheaders2
830+ self . sent_sendheaders2
831831 }
832832
833833 /// Check if we can request headers2 from this peer.
834834 pub fn can_request_headers2 ( & self ) -> bool {
835835 // We can request headers2 if peer has the service flag for headers2 support
836836 // Note: We don't wait for SendHeaders2 from peer as that creates a race condition
837837 // during initial sync. The service flag is sufficient to know they support headers2.
838- if let Some ( services) = self . peer_services {
838+ if let Some ( services) = self . services {
839839 dashcore:: network:: constants:: ServiceFlags :: from ( services)
840840 . has ( dashcore:: network:: constants:: NODE_HEADERS_COMPRESSED )
841841 } else {
0 commit comments