Browse Source

net: Introduce CConnection::Options to avoid passing so many params

0.14
Cory Fields 9 years ago
parent
commit
a19553b992
  1. 11
      src/init.cpp
  2. 14
      src/net.cpp
  3. 11
      src/net.h

11
src/init.cpp

@ -1515,8 +1515,15 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
MapPort(GetBoolArg("-upnp", DEFAULT_UPNP)); MapPort(GetBoolArg("-upnp", DEFAULT_UPNP));
std::string strNodeError; std::string strNodeError;
int nMaxOutbound = std::min(MAX_OUTBOUND_CONNECTIONS, nMaxConnections); CConnman::Options connOptions;
if(!connman.Start(threadGroup, scheduler, nLocalServices, nRelevantServices, nMaxConnections, nMaxOutbound, chainActive.Height(), &uiInterface, strNodeError)) connOptions.nLocalServices = nLocalServices;
connOptions.nRelevantServices = nRelevantServices;
connOptions.nMaxConnections = nMaxConnections;
connOptions.nMaxOutbound = std::min(MAX_OUTBOUND_CONNECTIONS, connOptions.nMaxConnections);
connOptions.nBestHeight = chainActive.Height();
connOptions.uiInterface = &uiInterface;
if(!connman.Start(threadGroup, scheduler, strNodeError, connOptions))
return InitError(strNodeError); return InitError(strNodeError);
// ********************************************************* Step 12: finished // ********************************************************* Step 12: finished

14
src/net.cpp

@ -2049,26 +2049,26 @@ NodeId CConnman::GetNewNodeId()
return nLastNodeId.fetch_add(1, std::memory_order_relaxed); return nLastNodeId.fetch_add(1, std::memory_order_relaxed);
} }
bool CConnman::Start(boost::thread_group& threadGroup, CScheduler& scheduler, ServiceFlags nLocalServicesIn, ServiceFlags nRelevantServicesIn, int nMaxConnectionsIn, int nMaxOutboundIn, int nBestHeightIn, CClientUIInterface* interfaceIn, std::string& strNodeError) bool CConnman::Start(boost::thread_group& threadGroup, CScheduler& scheduler, std::string& strNodeError, Options connOptions)
{ {
nTotalBytesRecv = 0; nTotalBytesRecv = 0;
nTotalBytesSent = 0; nTotalBytesSent = 0;
nMaxOutboundLimit = 0; nMaxOutboundLimit = 0;
nMaxOutboundTotalBytesSentInCycle = 0; nMaxOutboundTotalBytesSentInCycle = 0;
nMaxOutboundTimeframe = 60*60*24; //1 day nMaxOutboundTimeframe = 60*60*24; //1 day
nLocalServices = nLocalServicesIn;
nRelevantServices = nRelevantServicesIn;
nMaxOutboundCycleStartTime = 0; nMaxOutboundCycleStartTime = 0;
nMaxConnections = nMaxConnectionsIn; nRelevantServices = connOptions.nRelevantServices;
nMaxOutbound = std::min((nMaxOutboundIn), nMaxConnections); nLocalServices = connOptions.nLocalServices;
nMaxConnections = connOptions.nMaxConnections;
nMaxOutbound = std::min((connOptions.nMaxOutbound), nMaxConnections);
nSendBufferMaxSize = 1000*GetArg("-maxsendbuffer", DEFAULT_MAXSENDBUFFER); nSendBufferMaxSize = 1000*GetArg("-maxsendbuffer", DEFAULT_MAXSENDBUFFER);
nReceiveFloodSize = 1000*GetArg("-maxreceivebuffer", DEFAULT_MAXRECEIVEBUFFER); nReceiveFloodSize = 1000*GetArg("-maxreceivebuffer", DEFAULT_MAXRECEIVEBUFFER);
SetBestHeight(nBestHeightIn); SetBestHeight(connOptions.nBestHeight);
clientInterface = interfaceIn; clientInterface = connOptions.uiInterface;
if (clientInterface) if (clientInterface)
clientInterface->InitMessage(_("Loading addresses...")); clientInterface->InitMessage(_("Loading addresses..."));
// Load addresses from peers.dat // Load addresses from peers.dat

11
src/net.h

@ -109,9 +109,18 @@ public:
CONNECTIONS_ALL = (CONNECTIONS_IN | CONNECTIONS_OUT), CONNECTIONS_ALL = (CONNECTIONS_IN | CONNECTIONS_OUT),
}; };
struct Options
{
ServiceFlags nLocalServices = NODE_NONE;
ServiceFlags nRelevantServices = NODE_NONE;
int nMaxConnections = 0;
int nMaxOutbound = 0;
int nBestHeight = 0;
CClientUIInterface* uiInterface = nullptr;
};
CConnman(); CConnman();
~CConnman(); ~CConnman();
bool Start(boost::thread_group& threadGroup, CScheduler& scheduler, ServiceFlags nLocalServicesIn, ServiceFlags nRelevantServicesIn, int nMaxConnectionsIn, int nMaxOutboundIn, int nBestHeightIn, CClientUIInterface* interfaceIn, std::string& strNodeError); bool Start(boost::thread_group& threadGroup, CScheduler& scheduler, std::string& strNodeError, Options options);
void Stop(); void Stop();
bool BindListenPort(const CService &bindAddr, std::string& strError, bool fWhitelisted = false); bool BindListenPort(const CService &bindAddr, std::string& strError, bool fWhitelisted = false);
bool OpenNetworkConnection(const CAddress& addrConnect, bool fCountFailure, CSemaphoreGrant *grantOutbound = NULL, const char *strDest = NULL, bool fOneShot = false, bool fFeeler = false); bool OpenNetworkConnection(const CAddress& addrConnect, bool fCountFailure, CSemaphoreGrant *grantOutbound = NULL, const char *strDest = NULL, bool fOneShot = false, bool fFeeler = false);

Loading…
Cancel
Save