commit
191b087e0e
1 changed files with 40 additions and 39 deletions
79
src/main.cpp
79
src/main.cpp
|
@ -74,53 +74,54 @@ const string strMessageMagic = "Bitcoin Signed Message:\n";
|
|||
|
||||
// Internal stuff
|
||||
namespace {
|
||||
struct CBlockIndexWorkComparator
|
||||
{
|
||||
bool operator()(CBlockIndex *pa, CBlockIndex *pb) {
|
||||
// First sort by most total work, ...
|
||||
if (pa->nChainWork > pb->nChainWork) return false;
|
||||
if (pa->nChainWork < pb->nChainWork) return true;
|
||||
struct CBlockIndexWorkComparator
|
||||
{
|
||||
bool operator()(CBlockIndex *pa, CBlockIndex *pb) {
|
||||
// First sort by most total work, ...
|
||||
if (pa->nChainWork > pb->nChainWork) return false;
|
||||
if (pa->nChainWork < pb->nChainWork) return true;
|
||||
|
||||
// ... then by earliest time received, ...
|
||||
if (pa->nSequenceId < pb->nSequenceId) return false;
|
||||
if (pa->nSequenceId > pb->nSequenceId) return true;
|
||||
// ... then by earliest time received, ...
|
||||
if (pa->nSequenceId < pb->nSequenceId) return false;
|
||||
if (pa->nSequenceId > pb->nSequenceId) return true;
|
||||
|
||||
// Use pointer address as tie breaker (should only happen with blocks
|
||||
// loaded from disk, as those all have id 0).
|
||||
if (pa < pb) return false;
|
||||
if (pa > pb) return true;
|
||||
// Use pointer address as tie breaker (should only happen with blocks
|
||||
// loaded from disk, as those all have id 0).
|
||||
if (pa < pb) return false;
|
||||
if (pa > pb) return true;
|
||||
|
||||
// Identical blocks.
|
||||
return false;
|
||||
}
|
||||
};
|
||||
// Identical blocks.
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
CBlockIndex *pindexBestInvalid;
|
||||
set<CBlockIndex*, CBlockIndexWorkComparator> setBlockIndexValid; // may contain all CBlockIndex*'s that have validness >=BLOCK_VALID_TRANSACTIONS, and must contain those who aren't failed
|
||||
CBlockIndex *pindexBestInvalid;
|
||||
// may contain all CBlockIndex*'s that have validness >=BLOCK_VALID_TRANSACTIONS, and must contain those who aren't failed
|
||||
set<CBlockIndex*, CBlockIndexWorkComparator> setBlockIndexValid;
|
||||
|
||||
CCriticalSection cs_LastBlockFile;
|
||||
CBlockFileInfo infoLastBlockFile;
|
||||
int nLastBlockFile = 0;
|
||||
CCriticalSection cs_LastBlockFile;
|
||||
CBlockFileInfo infoLastBlockFile;
|
||||
int nLastBlockFile = 0;
|
||||
|
||||
// Every received block is assigned a unique and increasing identifier, so we
|
||||
// know which one to give priority in case of a fork.
|
||||
CCriticalSection cs_nBlockSequenceId;
|
||||
// Blocks loaded from disk are assigned id 0, so start the counter at 1.
|
||||
uint32_t nBlockSequenceId = 1;
|
||||
// Every received block is assigned a unique and increasing identifier, so we
|
||||
// know which one to give priority in case of a fork.
|
||||
CCriticalSection cs_nBlockSequenceId;
|
||||
// Blocks loaded from disk are assigned id 0, so start the counter at 1.
|
||||
uint32_t nBlockSequenceId = 1;
|
||||
|
||||
// Sources of received blocks, to be able to send them reject messages or ban
|
||||
// them, if processing happens afterwards. Protected by cs_main.
|
||||
map<uint256, NodeId> mapBlockSource;
|
||||
// Sources of received blocks, to be able to send them reject messages or ban
|
||||
// them, if processing happens afterwards. Protected by cs_main.
|
||||
map<uint256, NodeId> mapBlockSource;
|
||||
|
||||
// Blocks that are in flight, and that are in the queue to be downloaded.
|
||||
// Protected by cs_main.
|
||||
struct QueuedBlock {
|
||||
uint256 hash;
|
||||
int64_t nTime; // Time of "getdata" request in microseconds.
|
||||
int nQueuedBefore; // Number of blocks in flight at the time of request.
|
||||
};
|
||||
map<uint256, pair<NodeId, list<QueuedBlock>::iterator> > mapBlocksInFlight;
|
||||
map<uint256, pair<NodeId, list<uint256>::iterator> > mapBlocksToDownload;
|
||||
// Blocks that are in flight, and that are in the queue to be downloaded.
|
||||
// Protected by cs_main.
|
||||
struct QueuedBlock {
|
||||
uint256 hash;
|
||||
int64_t nTime; // Time of "getdata" request in microseconds.
|
||||
int nQueuedBefore; // Number of blocks in flight at the time of request.
|
||||
};
|
||||
map<uint256, pair<NodeId, list<QueuedBlock>::iterator> > mapBlocksInFlight;
|
||||
map<uint256, pair<NodeId, list<uint256>::iterator> > mapBlocksToDownload;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
|
Loading…
Reference in a new issue