mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-05 10:17:30 -05:00
aa250f0453
Generally useless information. Only updates on connect time, not after that. Peers can easily lie and the median filter is not effective in preventing that. In the past it was used for progress display in the GUI but `CheckPoints::guessVerificationProgress` provides a better way that is now used. It was too easy to mislead it. Peers do lie about it in practice, see issue #4065. From the RPC, `getpeerinfo` gives the peer raw values, which are more useful.
101 lines
2.6 KiB
C++
101 lines
2.6 KiB
C++
// Copyright (c) 2011-2013 The Bitcoin developers
|
|
// Distributed under the MIT/X11 software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef CLIENTMODEL_H
|
|
#define CLIENTMODEL_H
|
|
|
|
#include <QObject>
|
|
|
|
class AddressTableModel;
|
|
class OptionsModel;
|
|
class TransactionTableModel;
|
|
|
|
class CWallet;
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QDateTime;
|
|
class QTimer;
|
|
QT_END_NAMESPACE
|
|
|
|
enum BlockSource {
|
|
BLOCK_SOURCE_NONE,
|
|
BLOCK_SOURCE_REINDEX,
|
|
BLOCK_SOURCE_DISK,
|
|
BLOCK_SOURCE_NETWORK
|
|
};
|
|
|
|
enum NumConnections {
|
|
CONNECTIONS_NONE = 0,
|
|
CONNECTIONS_IN = (1U << 0),
|
|
CONNECTIONS_OUT = (1U << 1),
|
|
CONNECTIONS_ALL = (CONNECTIONS_IN | CONNECTIONS_OUT),
|
|
};
|
|
|
|
/** Model for Bitcoin network client. */
|
|
class ClientModel : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit ClientModel(OptionsModel *optionsModel, QObject *parent = 0);
|
|
~ClientModel();
|
|
|
|
OptionsModel *getOptionsModel();
|
|
|
|
//! Return number of connections, default is in- and outbound (total)
|
|
int getNumConnections(unsigned int flags = CONNECTIONS_ALL) const;
|
|
int getNumBlocks() const;
|
|
int getNumBlocksAtStartup();
|
|
|
|
quint64 getTotalBytesRecv() const;
|
|
quint64 getTotalBytesSent() const;
|
|
|
|
double getVerificationProgress() const;
|
|
QDateTime getLastBlockDate() const;
|
|
|
|
//! Return network (main, testnet3, regtest)
|
|
QString getNetworkName() const;
|
|
//! Return true if core is doing initial block download
|
|
bool inInitialBlockDownload() const;
|
|
//! Return true if core is importing blocks
|
|
enum BlockSource getBlockSource() const;
|
|
//! Return warnings to be displayed in status bar
|
|
QString getStatusBarWarnings() const;
|
|
|
|
QString formatFullVersion() const;
|
|
QString formatBuildDate() const;
|
|
bool isReleaseVersion() const;
|
|
QString clientName() const;
|
|
QString formatClientStartupTime() const;
|
|
|
|
private:
|
|
OptionsModel *optionsModel;
|
|
|
|
int cachedNumBlocks;
|
|
bool cachedReindexing;
|
|
bool cachedImporting;
|
|
|
|
int numBlocksAtStartup;
|
|
|
|
QTimer *pollTimer;
|
|
|
|
void subscribeToCoreSignals();
|
|
void unsubscribeFromCoreSignals();
|
|
|
|
signals:
|
|
void numConnectionsChanged(int count);
|
|
void numBlocksChanged(int count);
|
|
void alertsChanged(const QString &warnings);
|
|
void bytesChanged(quint64 totalBytesIn, quint64 totalBytesOut);
|
|
|
|
//! Fired when a message should be reported to the user
|
|
void message(const QString &title, const QString &message, unsigned int style);
|
|
|
|
public slots:
|
|
void updateTimer();
|
|
void updateNumConnections(int numConnections);
|
|
void updateAlert(const QString &hash, int status);
|
|
};
|
|
|
|
#endif // CLIENTMODEL_H
|