@ -528,11 +528,6 @@ public:
*/
Network ConnectedThroughNetwork ( ) const ;
protected :
mapMsgCmdSize mapSendBytesPerMsgCmd GUARDED_BY ( cs_vSend ) ;
mapMsgCmdSize mapRecvBytesPerMsgCmd GUARDED_BY ( cs_vRecv ) ;
public :
// We selected peer as (compact blocks) high-bandwidth peer (BIP152)
std : : atomic < bool > m_bip152_highbandwidth_to { false } ;
// Peer selected us as (compact blocks) high-bandwidth peer (BIP152)
@ -604,43 +599,6 @@ public:
CNode ( const CNode & ) = delete ;
CNode & operator = ( const CNode & ) = delete ;
private :
const NodeId id ;
const uint64_t nLocalHostNonce ;
const ConnectionType m_conn_type ;
std : : atomic < int > m_greatest_common_version { INIT_PROTO_VERSION } ;
//! Services offered to this peer.
//!
//! This is supplied by the parent CConnman during peer connection
//! (CConnman::ConnectNode()) from its attribute of the same name.
//!
//! This is const because there is no protocol defined for renegotiating
//! services initially offered to a peer. The set of local services we
//! offer should not change after initialization.
//!
//! An interesting example of this is NODE_NETWORK and initial block
//! download: a node which starts up from scratch doesn't have any blocks
//! to serve, but still advertises NODE_NETWORK because it will eventually
//! fulfill this role after IBD completes. P2P code is written in such a
//! way that it can gracefully handle peers who don't make good on their
//! service advertisements.
const ServiceFlags nLocalServices ;
std : : list < CNetMessage > vRecvMsg ; // Used only by SocketHandler thread
mutable RecursiveMutex cs_addrName ;
std : : string addrName GUARDED_BY ( cs_addrName ) ;
// Our address, as reported by the peer
CService addrLocal GUARDED_BY ( cs_addrLocal ) ;
mutable RecursiveMutex cs_addrLocal ;
//! Whether this peer is an inbound onion, e.g. connected via our Tor onion service.
const bool m_inbound_onion { false } ;
public :
NodeId GetId ( ) const {
return id ;
}
@ -691,8 +649,6 @@ public:
nRefCount - - ;
}
void AddAddressKnown ( const CAddress & _addr )
{
assert ( m_addr_known ) ;
@ -724,7 +680,6 @@ public:
}
}
void AddKnownTx ( const uint256 & hash )
{
if ( m_tx_relay ! = nullptr ) {
@ -759,6 +714,44 @@ public:
/** Whether this peer is an inbound onion, e.g. connected via our Tor onion service. */
bool IsInboundOnion ( ) const { return m_inbound_onion ; }
private :
const NodeId id ;
const uint64_t nLocalHostNonce ;
const ConnectionType m_conn_type ;
std : : atomic < int > m_greatest_common_version { INIT_PROTO_VERSION } ;
//! Services offered to this peer.
//!
//! This is supplied by the parent CConnman during peer connection
//! (CConnman::ConnectNode()) from its attribute of the same name.
//!
//! This is const because there is no protocol defined for renegotiating
//! services initially offered to a peer. The set of local services we
//! offer should not change after initialization.
//!
//! An interesting example of this is NODE_NETWORK and initial block
//! download: a node which starts up from scratch doesn't have any blocks
//! to serve, but still advertises NODE_NETWORK because it will eventually
//! fulfill this role after IBD completes. P2P code is written in such a
//! way that it can gracefully handle peers who don't make good on their
//! service advertisements.
const ServiceFlags nLocalServices ;
std : : list < CNetMessage > vRecvMsg ; // Used only by SocketHandler thread
mutable RecursiveMutex cs_addrName ;
std : : string addrName GUARDED_BY ( cs_addrName ) ;
// Our address, as reported by the peer
CService addrLocal GUARDED_BY ( cs_addrLocal ) ;
mutable RecursiveMutex cs_addrLocal ;
//! Whether this peer is an inbound onion, e.g. connected via our Tor onion service.
const bool m_inbound_onion { false } ;
mapMsgCmdSize mapSendBytesPerMsgCmd GUARDED_BY ( cs_vSend ) ;
mapMsgCmdSize mapRecvBytesPerMsgCmd GUARDED_BY ( cs_vRecv ) ;
} ;
/**