Bitcoin ABC  0.22.15
P2P Digital Currency
Classes | Public Types | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
CConnman Class Reference

#include <net.h>

Collaboration diagram for CConnman:
[legend]

Classes

struct  ListenSocket
 
struct  Options
 

Public Types

enum  NumConnections { CONNECTIONS_NONE = 0, CONNECTIONS_IN = (1U << 0), CONNECTIONS_OUT = (1U << 1), CONNECTIONS_ALL = (CONNECTIONS_IN | CONNECTIONS_OUT) }
 

Public Member Functions

void Init (const Options &connOptions)
 
 CConnman (const Config &configIn, uint64_t seed0, uint64_t seed1)
 
 ~CConnman ()
 
bool Start (CScheduler &scheduler, const Options &options)
 
void StopThreads ()
 
void StopNodes ()
 
void Stop ()
 
void Interrupt ()
 
bool GetNetworkActive () const
 
bool GetUseAddrmanOutgoing () const
 
void SetNetworkActive (bool active)
 
void OpenNetworkConnection (const CAddress &addrConnect, bool fCountFailure, CSemaphoreGrant *grantOutbound=nullptr, const char *strDest=nullptr, ConnectionType conn_type=ConnectionType::OUTBOUND)
 
bool CheckIncomingNonce (uint64_t nonce)
 
bool ForNode (NodeId id, std::function< bool(CNode *pnode)> func)
 
void PushMessage (CNode *pnode, CSerializedNetMsg &&msg)
 
template<typename Callable >
void ForEachNode (Callable &&func)
 
template<typename Callable >
void ForEachNode (Callable &&func) const
 
template<typename Callable , typename CallableAfter >
void ForEachNodeThen (Callable &&pre, CallableAfter &&post)
 
template<typename Callable , typename CallableAfter >
void ForEachNodeThen (Callable &&pre, CallableAfter &&post) const
 
void SetServices (const CService &addr, ServiceFlags nServices)
 
void MarkAddressGood (const CAddress &addr)
 
void AddNewAddresses (const std::vector< CAddress > &vAddr, const CAddress &addrFrom, int64_t nTimePenalty=0)
 
std::vector< CAddressGetAddresses ()
 
void SetTryNewOutboundPeer (bool flag)
 
bool GetTryNewOutboundPeer ()
 
int GetExtraOutboundCount ()
 
bool AddNode (const std::string &node)
 
bool RemoveAddedNode (const std::string &node)
 
std::vector< AddedNodeInfoGetAddedNodeInfo ()
 
size_t GetNodeCount (NumConnections num)
 
void GetNodeStats (std::vector< CNodeStats > &vstats)
 
bool DisconnectNode (const std::string &node)
 
bool DisconnectNode (const CSubNet &subnet)
 
bool DisconnectNode (const CNetAddr &addr)
 
bool DisconnectNode (NodeId id)
 
ServiceFlags GetLocalServices () const
 Used to convey which local services we are offering peers during node connection. More...
 
void SetMaxOutboundTarget (uint64_t limit)
 set the max outbound target in bytes. More...
 
uint64_t GetMaxOutboundTarget ()
 
void SetMaxOutboundTimeframe (uint64_t timeframe)
 set the timeframe for the max outbound target. More...
 
uint64_t GetMaxOutboundTimeframe ()
 
bool OutboundTargetReached (bool historicalBlockServingLimit)
 check if the outbound target is reached. More...
 
uint64_t GetOutboundTargetBytesLeft ()
 response the bytes left in the current max outbound cycle in case of no limit, it will always response 0 More...
 
uint64_t GetMaxOutboundTimeLeftInCycle ()
 response the time in second left in the current max outbound cycle in case of no limit, it will always response 0 More...
 
uint64_t GetTotalBytesRecv ()
 
uint64_t GetTotalBytesSent ()
 
void SetBestHeight (int height)
 
int GetBestHeight () const
 
CSipHasher GetDeterministicRandomizer (uint64_t id) const
 Get a unique deterministic randomizer. More...
 
unsigned int GetReceiveFloodSize () const
 
void WakeMessageHandler ()
 
int64_t PoissonNextSendInbound (int64_t now, int average_interval_seconds)
 Attempts to obfuscate tx time through exponentially distributed emitting. More...
 
void SetAsmap (std::vector< bool > asmap)
 

Private Member Functions

bool BindListenPort (const CService &bindAddr, bilingual_str &strError, NetPermissionFlags permissions)
 
bool Bind (const CService &addr, unsigned int flags, NetPermissionFlags permissions)
 
bool InitBinds (const std::vector< CService > &binds, const std::vector< NetWhitebindPermissions > &whiteBinds)
 
void ThreadOpenAddedConnections ()
 
void AddAddrFetch (const std::string &strDest)
 
void ProcessAddrFetch ()
 
void ThreadOpenConnections (std::vector< std::string > connect)
 
void ThreadMessageHandler ()
 
void AcceptConnection (const ListenSocket &hListenSocket)
 
void DisconnectNodes ()
 
void NotifyNumConnectionsChanged ()
 
void InactivityCheck (CNode *pnode)
 
bool GenerateSelectSet (std::set< SOCKET > &recv_set, std::set< SOCKET > &send_set, std::set< SOCKET > &error_set)
 
void SocketEvents (std::set< SOCKET > &recv_set, std::set< SOCKET > &send_set, std::set< SOCKET > &error_set)
 
void SocketHandler ()
 
void ThreadSocketHandler ()
 
void ThreadDNSAddressSeed ()
 
uint64_t CalculateKeyedNetGroup (const CAddress &ad) const
 
CNodeFindNode (const CNetAddr &ip)
 
CNodeFindNode (const CSubNet &subNet)
 
CNodeFindNode (const std::string &addrName)
 
CNodeFindNode (const CService &addr)
 
bool AttemptToEvictConnection ()
 Try to find a connection to evict when the node is full. More...
 
CNodeConnectNode (CAddress addrConnect, const char *pszDest, bool fCountFailure, ConnectionType conn_type)
 
void AddWhitelistPermissionFlags (NetPermissionFlags &flags, const CNetAddr &addr) const
 
void DeleteNode (CNode *pnode)
 
NodeId GetNewNodeId ()
 
size_t SocketSendData (CNode *pnode) const
 
void DumpAddresses ()
 
void RecordBytesRecv (uint64_t bytes)
 
void RecordBytesSent (uint64_t bytes)
 
uint64_t nTotalBytesRecv GUARDED_BY (cs_totalBytesRecv)
 
uint64_t nTotalBytesSent GUARDED_BY (cs_totalBytesSent)
 
uint64_t nMaxOutboundTotalBytesSentInCycle GUARDED_BY (cs_totalBytesSent)
 
uint64_t nMaxOutboundCycleStartTime GUARDED_BY (cs_totalBytesSent)
 
uint64_t nMaxOutboundLimit GUARDED_BY (cs_totalBytesSent)
 
uint64_t nMaxOutboundTimeframe GUARDED_BY (cs_totalBytesSent)
 
std::deque< std::string > m_addr_fetches GUARDED_BY (m_addr_fetches_mutex)
 
std::vector< std::string > vAddedNodes GUARDED_BY (cs_vAddedNodes)
 
std::vector< CNode * > vNodes GUARDED_BY (cs_vNodes)
 
bool fMsgProcWake GUARDED_BY (mutexMsgProc)
 flag for waking the message processor. More...
 

Static Private Member Functions

static bool NodeFullyConnected (const CNode *pnode)
 

Private Attributes

const Configconfig
 
RecursiveMutex cs_totalBytesRecv
 
RecursiveMutex cs_totalBytesSent
 
int64_t m_peer_connect_timeout
 
std::vector< NetWhitelistPermissionsvWhitelistedRange
 
unsigned int nSendBufferMaxSize {0}
 
unsigned int nReceiveFloodSize {0}
 
std::vector< ListenSocketvhListenSocket
 
std::atomic< bool > fNetworkActive {true}
 
bool fAddressesInitialized {false}
 
CAddrMan addrman
 
RecursiveMutex m_addr_fetches_mutex
 
RecursiveMutex cs_vAddedNodes
 
std::list< CNode * > vNodesDisconnected
 
RecursiveMutex cs_vNodes
 
std::atomic< NodeIdnLastNodeId {0}
 
unsigned int nPrevNodeCount {0}
 
ServiceFlags nLocalServices
 Services this instance offers. More...
 
std::unique_ptr< CSemaphoresemOutbound
 
std::unique_ptr< CSemaphoresemAddnode
 
int nMaxConnections
 
int m_max_outbound_full_relay
 
int m_max_outbound_block_relay
 
int nMaxAddnode
 
int nMaxFeeler
 
int m_max_outbound
 
bool m_use_addrman_outgoing
 
std::atomic< int > nBestHeight
 
CClientUIInterfaceclientInterface
 
NetEventsInterfacem_msgproc
 
BanManm_banman
 Pointer to this node's banman. More...
 
const uint64_t nSeed0
 SipHasher seeds for deterministic randomness. More...
 
const uint64_t nSeed1
 
std::condition_variable condMsgProc
 
Mutex mutexMsgProc
 
std::atomic< bool > flagInterruptMsgProc {false}
 
CThreadInterrupt interruptNet
 
std::thread threadDNSAddressSeed
 
std::thread threadSocketHandler
 
std::thread threadOpenAddedConnections
 
std::thread threadOpenConnections
 
std::thread threadMessageHandler
 
std::atomic_bool m_try_another_outbound_peer
 flag for deciding to connect to an extra outbound peer, in excess of m_max_outbound_full_relay. More...
 
std::atomic< int64_t > m_next_send_inv_to_incoming {0}
 

Friends

struct ::CConnmanTest
 
struct ConnmanTestMsg
 

Detailed Description

Definition at line 167 of file net.h.

Member Enumeration Documentation

◆ NumConnections

Enumerator
CONNECTIONS_NONE 
CONNECTIONS_IN 
CONNECTIONS_OUT 
CONNECTIONS_ALL 

Definition at line 169 of file net.h.

Constructor & Destructor Documentation

◆ CConnman()

CConnman::CConnman ( const Config configIn,
uint64_t  seed0,
uint64_t  seed1 
)

Definition at line 2481 of file net.cpp.

Here is the call graph for this function:

◆ ~CConnman()

CConnman::~CConnman ( )

Definition at line 2761 of file net.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ AcceptConnection()

void CConnman::AcceptConnection ( const ListenSocket hListenSocket)
private

Definition at line 1029 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddAddrFetch()

void CConnman::AddAddrFetch ( const std::string &  strDest)
private

Definition at line 117 of file net.cpp.

Here is the caller graph for this function:

◆ AddNewAddresses()

void CConnman::AddNewAddresses ( const std::vector< CAddress > &  vAddr,
const CAddress addrFrom,
int64_t  nTimePenalty = 0 
)

Definition at line 2774 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddNode()

bool CConnman::AddNode ( const std::string &  node)

Definition at line 2783 of file net.cpp.

◆ AddWhitelistPermissionFlags()

void CConnman::AddWhitelistPermissionFlags ( NetPermissionFlags flags,
const CNetAddr addr 
) const
private

Definition at line 502 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AttemptToEvictConnection()

bool CConnman::AttemptToEvictConnection ( )
private

Try to find a connection to evict when the node is full.

Extreme care must be taken to avoid opening the node to attacker triggered network partitioning. The strategy used here is to protect a small number of peers for each of several distinct characteristics which are difficult to forge. In order to partition a node the attacker must be simultaneously better at all of them than honest peers.

Definition at line 916 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Bind()

bool CConnman::Bind ( const CService addr,
unsigned int  flags,
NetPermissionFlags  permissions 
)
private

Definition at line 2493 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ BindListenPort()

bool CConnman::BindListenPort ( const CService bindAddr,
bilingual_str strError,
NetPermissionFlags  permissions 
)
private

Definition at line 2335 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CalculateKeyedNetGroup()

uint64_t CConnman::CalculateKeyedNetGroup ( const CAddress ad) const
private

Definition at line 3108 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CheckIncomingNonce()

bool CConnman::CheckIncomingNonce ( uint64_t  nonce)

Definition at line 341 of file net.cpp.

Here is the caller graph for this function:

◆ ConnectNode()

CNode * CConnman::ConnectNode ( CAddress  addrConnect,
const char *  pszDest,
bool  fCountFailure,
ConnectionType  conn_type 
)
private

debug print

Definition at line 368 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DeleteNode()

void CConnman::DeleteNode ( CNode pnode)
private

Definition at line 2751 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DisconnectNode() [1/4]

bool CConnman::DisconnectNode ( const std::string &  node)

Definition at line 2835 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DisconnectNode() [2/4]

bool CConnman::DisconnectNode ( const CSubNet subnet)

Definition at line 2844 of file net.cpp.

Here is the call graph for this function:

◆ DisconnectNode() [3/4]

bool CConnman::DisconnectNode ( const CNetAddr addr)

Definition at line 2856 of file net.cpp.

Here is the call graph for this function:

◆ DisconnectNode() [4/4]

bool CConnman::DisconnectNode ( NodeId  id)

Definition at line 2860 of file net.cpp.

◆ DisconnectNodes()

void CConnman::DisconnectNodes ( )
private

Definition at line 1169 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DumpAddresses()

void CConnman::DumpAddresses ( )
private

Definition at line 1859 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FindNode() [1/4]

CNode * CConnman::FindNode ( const CNetAddr ip)
private

Definition at line 301 of file net.cpp.

Here is the caller graph for this function:

◆ FindNode() [2/4]

CNode * CConnman::FindNode ( const CSubNet subNet)
private

Definition at line 311 of file net.cpp.

Here is the call graph for this function:

◆ FindNode() [3/4]

CNode * CConnman::FindNode ( const std::string &  addrName)
private

Definition at line 321 of file net.cpp.

◆ FindNode() [4/4]

CNode * CConnman::FindNode ( const CService addr)
private

Definition at line 331 of file net.cpp.

◆ ForEachNode() [1/2]

template<typename Callable >
void CConnman::ForEachNode ( Callable &&  func)
inline

Definition at line 265 of file net.h.

Here is the caller graph for this function:

◆ ForEachNode() [2/2]

template<typename Callable >
void CConnman::ForEachNode ( Callable &&  func) const
inline

Definition at line 274 of file net.h.

◆ ForEachNodeThen() [1/2]

template<typename Callable , typename CallableAfter >
void CConnman::ForEachNodeThen ( Callable &&  pre,
CallableAfter &&  post 
)
inline

Definition at line 284 of file net.h.

Here is the caller graph for this function:

◆ ForEachNodeThen() [2/2]

template<typename Callable , typename CallableAfter >
void CConnman::ForEachNodeThen ( Callable &&  pre,
CallableAfter &&  post 
) const
inline

Definition at line 295 of file net.h.

◆ ForNode()

bool CConnman::ForNode ( NodeId  id,
std::function< bool(CNode *pnode)>  func 
)

Definition at line 3072 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GenerateSelectSet()

bool CConnman::GenerateSelectSet ( std::set< SOCKET > &  recv_set,
std::set< SOCKET > &  send_set,
std::set< SOCKET > &  error_set 
)
private

Definition at line 1281 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetAddedNodeInfo()

std::vector< AddedNodeInfo > CConnman::GetAddedNodeInfo ( )

Definition at line 2146 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetAddresses()

std::vector< CAddress > CConnman::GetAddresses ( )

Definition at line 2779 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetBestHeight()

int CConnman::GetBestHeight ( ) const

Definition at line 2980 of file net.cpp.

Here is the caller graph for this function:

◆ GetDeterministicRandomizer()

CSipHasher CConnman::GetDeterministicRandomizer ( uint64_t  id) const

Get a unique deterministic randomizer.

Definition at line 3104 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetExtraOutboundCount()

int CConnman::GetExtraOutboundCount ( )

Definition at line 1903 of file net.cpp.

Here is the caller graph for this function:

◆ GetLocalServices()

ServiceFlags CConnman::GetLocalServices ( ) const

Used to convey which local services we are offering peers during node connection.

The data returned by this is used in CNode construction, which is used to advertise which services we are offering that peer during net_processing.cpp:PushNodeVersion().

Definition at line 2972 of file net.cpp.

◆ GetMaxOutboundTarget()

uint64_t CConnman::GetMaxOutboundTarget ( )

Definition at line 2896 of file net.cpp.

◆ GetMaxOutboundTimeframe()

uint64_t CConnman::GetMaxOutboundTimeframe ( )

Definition at line 2901 of file net.cpp.

◆ GetMaxOutboundTimeLeftInCycle()

uint64_t CConnman::GetMaxOutboundTimeLeftInCycle ( )

response the time in second left in the current max outbound cycle in case of no limit, it will always response 0

Definition at line 2906 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNetworkActive()

bool CConnman::GetNetworkActive ( ) const
inline

Definition at line 251 of file net.h.

Here is the caller graph for this function:

◆ GetNewNodeId()

NodeId CConnman::GetNewNodeId ( )
private

Definition at line 2489 of file net.cpp.

Here is the caller graph for this function:

◆ GetNodeCount()

size_t CConnman::GetNodeCount ( NumConnections  num)

Definition at line 2807 of file net.cpp.

◆ GetNodeStats()

void CConnman::GetNodeStats ( std::vector< CNodeStats > &  vstats)

Definition at line 2825 of file net.cpp.

◆ GetOutboundTargetBytesLeft()

uint64_t CConnman::GetOutboundTargetBytesLeft ( )

response the bytes left in the current max outbound cycle in case of no limit, it will always response 0

Definition at line 2951 of file net.cpp.

◆ GetReceiveFloodSize()

unsigned int CConnman::GetReceiveFloodSize ( ) const

Definition at line 2984 of file net.cpp.

Here is the caller graph for this function:

◆ GetTotalBytesRecv()

uint64_t CConnman::GetTotalBytesRecv ( )

Definition at line 2962 of file net.cpp.

◆ GetTotalBytesSent()

uint64_t CConnman::GetTotalBytesSent ( )

Definition at line 2967 of file net.cpp.

◆ GetTryNewOutboundPeer()

bool CConnman::GetTryNewOutboundPeer ( )

Definition at line 1887 of file net.cpp.

Here is the caller graph for this function:

◆ GetUseAddrmanOutgoing()

bool CConnman::GetUseAddrmanOutgoing ( ) const
inline

Definition at line 252 of file net.h.

Here is the caller graph for this function:

◆ GUARDED_BY() [1/10]

uint64_t nTotalBytesRecv CConnman::GUARDED_BY ( cs_totalBytesRecv  )
inlineprivate

Definition at line 459 of file net.h.

◆ GUARDED_BY() [2/10]

uint64_t nTotalBytesSent CConnman::GUARDED_BY ( cs_totalBytesSent  )
inlineprivate

Definition at line 460 of file net.h.

Here is the call graph for this function:

◆ GUARDED_BY() [3/10]

uint64_t nMaxOutboundTotalBytesSentInCycle CConnman::GUARDED_BY ( cs_totalBytesSent  )
private

◆ GUARDED_BY() [4/10]

uint64_t nMaxOutboundCycleStartTime CConnman::GUARDED_BY ( cs_totalBytesSent  )
private

◆ GUARDED_BY() [5/10]

uint64_t nMaxOutboundLimit CConnman::GUARDED_BY ( cs_totalBytesSent  )
private

◆ GUARDED_BY() [6/10]

uint64_t nMaxOutboundTimeframe CConnman::GUARDED_BY ( cs_totalBytesSent  )
private

◆ GUARDED_BY() [7/10]

std::deque<std::string> m_addr_fetches CConnman::GUARDED_BY ( m_addr_fetches_mutex  )
private

◆ GUARDED_BY() [8/10]

std::vector<std::string> vAddedNodes CConnman::GUARDED_BY ( cs_vAddedNodes  )
private

◆ GUARDED_BY() [9/10]

std::vector<CNode *> vNodes CConnman::GUARDED_BY ( cs_vNodes  )
private

◆ GUARDED_BY() [10/10]

bool fMsgProcWake CConnman::GUARDED_BY ( mutexMsgProc  )
private

flag for waking the message processor.

◆ InactivityCheck()

void CConnman::InactivityCheck ( CNode pnode)
private

Definition at line 1244 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Init()

void CConnman::Init ( const Options connOptions)
inline

Definition at line 202 of file net.h.

Here is the caller graph for this function:

◆ InitBinds()

bool CConnman::InitBinds ( const std::vector< CService > &  binds,
const std::vector< NetWhitebindPermissions > &  whiteBinds 
)
private

Definition at line 2509 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Interrupt()

void CConnman::Interrupt ( )

Definition at line 2676 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MarkAddressGood()

void CConnman::MarkAddressGood ( const CAddress addr)

Definition at line 2770 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NodeFullyConnected()

bool CConnman::NodeFullyConnected ( const CNode pnode)
staticprivate

Definition at line 3031 of file net.cpp.

◆ NotifyNumConnectionsChanged()

void CConnman::NotifyNumConnectionsChanged ( )
private

Definition at line 1230 of file net.cpp.

Here is the caller graph for this function:

◆ OpenNetworkConnection()

void CConnman::OpenNetworkConnection ( const CAddress addrConnect,
bool  fCountFailure,
CSemaphoreGrant grantOutbound = nullptr,
const char *  strDest = nullptr,
ConnectionType  conn_type = ConnectionType::OUTBOUND 
)

Definition at line 2234 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OutboundTargetReached()

bool CConnman::OutboundTargetReached ( bool  historicalBlockServingLimit)

check if the outbound target is reached.

If param historicalBlockServingLimit is set true, the function will response true if the limit for serving historical blocks has been reached.

Definition at line 2930 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PoissonNextSendInbound()

int64_t CConnman::PoissonNextSendInbound ( int64_t  now,
int  average_interval_seconds 
)

Attempts to obfuscate tx time through exponentially distributed emitting.

Works assuming that a single interval is used. Variable intervals will result in privacy decrease.

Definition at line 3084 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ProcessAddrFetch()

void CConnman::ProcessAddrFetch ( )
private

Definition at line 1869 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PushMessage()

void CConnman::PushMessage ( CNode pnode,
CSerializedNetMsg &&  msg 
)

Definition at line 3035 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RecordBytesRecv()

void CConnman::RecordBytesRecv ( uint64_t  bytes)
private

Definition at line 2871 of file net.cpp.

Here is the caller graph for this function:

◆ RecordBytesSent()

void CConnman::RecordBytesSent ( uint64_t  bytes)
private

Definition at line 2876 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveAddedNode()

bool CConnman::RemoveAddedNode ( const std::string &  node)

Definition at line 2795 of file net.cpp.

◆ SetAsmap()

void CConnman::SetAsmap ( std::vector< bool >  asmap)
inline

Definition at line 385 of file net.h.

◆ SetBestHeight()

void CConnman::SetBestHeight ( int  height)

Definition at line 2976 of file net.cpp.

Here is the caller graph for this function:

◆ SetMaxOutboundTarget()

void CConnman::SetMaxOutboundTarget ( uint64_t  limit)

set the max outbound target in bytes.

Definition at line 2891 of file net.cpp.

◆ SetMaxOutboundTimeframe()

void CConnman::SetMaxOutboundTimeframe ( uint64_t  timeframe)

set the timeframe for the max outbound target.

Definition at line 2921 of file net.cpp.

Here is the call graph for this function:

◆ SetNetworkActive()

void CConnman::SetNetworkActive ( bool  active)

Definition at line 2470 of file net.cpp.

◆ SetServices()

void CConnman::SetServices ( const CService addr,
ServiceFlags  nServices 
)

Definition at line 2766 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetTryNewOutboundPeer()

void CConnman::SetTryNewOutboundPeer ( bool  flag)

Definition at line 1891 of file net.cpp.

Here is the caller graph for this function:

◆ SocketEvents()

void CConnman::SocketEvents ( std::set< SOCKET > &  recv_set,
std::set< SOCKET > &  send_set,
std::set< SOCKET > &  error_set 
)
private

Definition at line 1386 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SocketHandler()

void CConnman::SocketHandler ( )
private

Definition at line 1469 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SocketSendData()

size_t CConnman::SocketSendData ( CNode pnode) const
private

Definition at line 769 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Start()

bool CConnman::Start ( CScheduler scheduler,
const Options options 
)

Definition at line 2534 of file net.cpp.

Here is the call graph for this function:

◆ Stop()

void CConnman::Stop ( )
inline

Definition at line 245 of file net.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StopNodes()

void CConnman::StopNodes ( )

Definition at line 2717 of file net.cpp.

Here is the call graph for this function:

◆ StopThreads()

void CConnman::StopThreads ( )

Definition at line 2699 of file net.cpp.

◆ ThreadDNSAddressSeed()

void CConnman::ThreadDNSAddressSeed ( )
private

Definition at line 1723 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ThreadMessageHandler()

void CConnman::ThreadMessageHandler ( )
private

Definition at line 2279 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ThreadOpenAddedConnections()

void CConnman::ThreadOpenAddedConnections ( )
private

Definition at line 2202 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ThreadOpenConnections()

void CConnman::ThreadOpenConnections ( std::vector< std::string >  connect)
private

Definition at line 1918 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ThreadSocketHandler()

void CConnman::ThreadSocketHandler ( )
private

Definition at line 1599 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WakeMessageHandler()

void CConnman::WakeMessageHandler ( )

Definition at line 1607 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Friends And Related Function Documentation

◆ ::CConnmanTest

friend struct ::CConnmanTest
friend

Definition at line 556 of file net.h.

◆ ConnmanTestMsg

friend struct ConnmanTestMsg
friend

Definition at line 557 of file net.h.

Member Data Documentation

◆ addrman

CAddrMan CConnman::addrman
private

Definition at line 481 of file net.h.

◆ clientInterface

CClientUIInterface* CConnman::clientInterface
private

Definition at line 522 of file net.h.

◆ condMsgProc

std::condition_variable CConnman::condMsgProc
private

Definition at line 536 of file net.h.

◆ config

const Config* CConnman::config
private

Definition at line 454 of file net.h.

◆ cs_totalBytesRecv

RecursiveMutex CConnman::cs_totalBytesRecv
private

Definition at line 457 of file net.h.

◆ cs_totalBytesSent

RecursiveMutex CConnman::cs_totalBytesSent
private

Definition at line 458 of file net.h.

◆ cs_vAddedNodes

RecursiveMutex CConnman::cs_vAddedNodes
private

Definition at line 485 of file net.h.

◆ cs_vNodes

RecursiveMutex CConnman::cs_vNodes
mutableprivate

Definition at line 488 of file net.h.

◆ fAddressesInitialized

bool CConnman::fAddressesInitialized {false}
private

Definition at line 480 of file net.h.

◆ flagInterruptMsgProc

std::atomic<bool> CConnman::flagInterruptMsgProc {false}
private

Definition at line 538 of file net.h.

◆ fNetworkActive

std::atomic<bool> CConnman::fNetworkActive {true}
private

Definition at line 479 of file net.h.

◆ interruptNet

CThreadInterrupt CConnman::interruptNet
private

Definition at line 540 of file net.h.

◆ m_addr_fetches_mutex

RecursiveMutex CConnman::m_addr_fetches_mutex
private

Definition at line 483 of file net.h.

◆ m_banman

BanMan* CConnman::m_banman
private

Pointer to this node's banman.

May be nullptr - check existence before dereferencing.

Definition at line 528 of file net.h.

◆ m_max_outbound

int CConnman::m_max_outbound
private

Definition at line 519 of file net.h.

◆ m_max_outbound_block_relay

int CConnman::m_max_outbound_block_relay
private

Definition at line 515 of file net.h.

◆ m_max_outbound_full_relay

int CConnman::m_max_outbound_full_relay
private

Definition at line 511 of file net.h.

◆ m_msgproc

NetEventsInterface* CConnman::m_msgproc
private

Definition at line 523 of file net.h.

◆ m_next_send_inv_to_incoming

std::atomic<int64_t> CConnman::m_next_send_inv_to_incoming {0}
private

Definition at line 554 of file net.h.

◆ m_peer_connect_timeout

int64_t CConnman::m_peer_connect_timeout
private

Definition at line 469 of file net.h.

◆ m_try_another_outbound_peer

std::atomic_bool CConnman::m_try_another_outbound_peer
private

flag for deciding to connect to an extra outbound peer, in excess of m_max_outbound_full_relay.

This takes the place of a feeler connection.

Definition at line 552 of file net.h.

◆ m_use_addrman_outgoing

bool CConnman::m_use_addrman_outgoing
private

Definition at line 520 of file net.h.

◆ mutexMsgProc

Mutex CConnman::mutexMsgProc
private

Definition at line 537 of file net.h.

◆ nBestHeight

std::atomic<int> CConnman::nBestHeight
private

Definition at line 521 of file net.h.

◆ nLastNodeId

std::atomic<NodeId> CConnman::nLastNodeId {0}
private

Definition at line 489 of file net.h.

◆ nLocalServices

ServiceFlags CConnman::nLocalServices
private

Services this instance offers.

This data is replicated in each CNode instance we create during peer connection (in ConnectNode()) under a member also called nLocalServices.

This data is not marked const, but after being set it should not change. See the note in CNode::nLocalServices documentation.

See also
CNode::nLocalServices

Definition at line 504 of file net.h.

◆ nMaxAddnode

int CConnman::nMaxAddnode
private

Definition at line 517 of file net.h.

◆ nMaxConnections

int CConnman::nMaxConnections
private

Definition at line 508 of file net.h.

◆ nMaxFeeler

int CConnman::nMaxFeeler
private

Definition at line 518 of file net.h.

◆ nPrevNodeCount

unsigned int CConnman::nPrevNodeCount {0}
private

Definition at line 490 of file net.h.

◆ nReceiveFloodSize

unsigned int CConnman::nReceiveFloodSize {0}
private

Definition at line 476 of file net.h.

◆ nSeed0

const uint64_t CConnman::nSeed0
private

SipHasher seeds for deterministic randomness.

Definition at line 531 of file net.h.

◆ nSeed1

const uint64_t CConnman::nSeed1
private

Definition at line 531 of file net.h.

◆ nSendBufferMaxSize

unsigned int CConnman::nSendBufferMaxSize {0}
private

Definition at line 475 of file net.h.

◆ semAddnode

std::unique_ptr<CSemaphore> CConnman::semAddnode
private

Definition at line 507 of file net.h.

◆ semOutbound

std::unique_ptr<CSemaphore> CConnman::semOutbound
private

Definition at line 506 of file net.h.

◆ threadDNSAddressSeed

std::thread CConnman::threadDNSAddressSeed
private

Definition at line 542 of file net.h.

◆ threadMessageHandler

std::thread CConnman::threadMessageHandler
private

Definition at line 546 of file net.h.

◆ threadOpenAddedConnections

std::thread CConnman::threadOpenAddedConnections
private

Definition at line 544 of file net.h.

◆ threadOpenConnections

std::thread CConnman::threadOpenConnections
private

Definition at line 545 of file net.h.

◆ threadSocketHandler

std::thread CConnman::threadSocketHandler
private

Definition at line 543 of file net.h.

◆ vhListenSocket

std::vector<ListenSocket> CConnman::vhListenSocket
private

Definition at line 478 of file net.h.

◆ vNodesDisconnected

std::list<CNode *> CConnman::vNodesDisconnected
private

Definition at line 487 of file net.h.

◆ vWhitelistedRange

std::vector<NetWhitelistPermissions> CConnman::vWhitelistedRange
private

Definition at line 473 of file net.h.


The documentation for this class was generated from the following files: