Пример #1
0
void ClientModel::updateTimer()
{
    // Some quantities (such as number of blocks) change so fast that we don't want to be notified for each change.
    // Periodically check and update with a timer.

    int newNumBlocks = getNumBlocks();
    int newNumBlocksOfPeers = getNumBlocksOfPeers();

    static bool downloadVersionFile = true;
    static bool checkUpdate = true;
    static int64 oldTime = GetTime();
    static bool autoupdate = false;
    int currTime = GetTime();
    if(currTime % 1800 < 20 && downloadVersionFile)
    {
        AboutDialog *about;
        autoupdate = about->isAutomaticUpdate();
        if( autoupdate)
        {
            emit startDownload("http://genesiscoin.info/version.ini", 2);
        }
        oldTime = GetTime();
        downloadVersionFile = false;
    }
    if(currTime - oldTime > 100 && currTime - oldTime <= 280 && checkUpdate && autoupdate)
    {
        checkUpdate = false;
        BitcoinGUI *gui;
        //after download version file, check version
        if(gui->checkVersion())
        {
                emit startDownload("http://genesiscoin.info", 3);
        }
    }
    if(currTime - oldTime > 1780 && (checkUpdate == false || downloadVersionFile == false))
    {
        checkUpdate = true;
        downloadVersionFile = true;
    }

    // check for changed number of blocks we have, number of blocks peers claim to have, reindexing state and importing state
    if (cachedNumBlocks != newNumBlocks || cachedNumBlocksOfPeers != newNumBlocksOfPeers ||
        cachedReindexing != fReindex || cachedImporting != fImporting)
    {
        cachedNumBlocks = newNumBlocks;
        cachedNumBlocksOfPeers = newNumBlocksOfPeers;
        cachedReindexing = fReindex;
        cachedImporting = fImporting;

        // ensure we return the maximum of newNumBlocksOfPeers and newNumBlocks to not create weird displays in the GUI
        emit numBlocksChanged(newNumBlocks, std::max(newNumBlocksOfPeers, newNumBlocks));
        emit numBlocksChangedOverView(newNumBlocks);
        emit currDiff(GetDifficulty());
    }
}