21 #include <validation.h> 26 #include <QMetaObject> 36 optionsModel(_optionsModel),
37 peerTableModel(nullptr),
38 banTableModel(nullptr),
39 m_thread(new QThread(this))
50 QTimer* timer =
new QTimer;
52 connect(timer, &QTimer::timeout, [
this] {
58 connect(
m_thread, &QThread::finished, timer, &QObject::deleteLater);
59 connect(
m_thread, &QThread::started, [timer] { timer->start(); });
63 QTimer::singleShot(0, timer, []() {
145 if (m_cached_tip_blocks.IsNull()) {
146 m_cached_tip_blocks = tip;
148 return m_cached_tip_blocks;
205 return QDateTime::fromSecsSinceEpoch(
GetStartupTime()).toString();
238 nLastUpdateNotification = now;
244 [
this](
const std::string& title,
int progress, [[maybe_unused]]
bool resume_possible) {
245 Q_EMIT
showProgress(QString::fromStdString(title), progress);
248 [
this](
int new_num_connections) {
252 [
this](
bool network_active) {
257 qDebug() <<
"ClientModel: NotifyAlertChanged";
262 qDebug() <<
"ClienModel: Requesting update for peer banlist";
virtual std::unique_ptr< Handler > handleNotifyHeaderTip(NotifyHeaderTipFn fn)=0
QString formatClientStartupTime() const
PeerTableModel * peerTableModel
QString formatSubVersion() const
Block tip (could be a header or not, depends on the subscribed signal).
interfaces::Node & m_node
SynchronizationState
Current sync state passed to tip changed callbacks.
bool isReleaseVersion() const
std::atomic< int64_t > cachedBestHeaderTime
int64_t GetTimeMillis()
Returns the system time (not mockable)
QString blocksDir() const
virtual size_t getMempoolDynamicUsage()=0
Get mempool dynamic usage.
QThread *const m_thread
A thread to interact with m_node asynchronously.
virtual int64_t getTotalBytesRecv()=0
Get total bytes recv.
virtual bool getImporting()=0
Get importing.
virtual size_t getMempoolSize()=0
Get mempool size.
void ThreadRename(std::string &&)
Rename a thread both in terms of an internal (in-memory) name as well as its system thread name...
void networkActiveChanged(bool networkActive)
BanTableModel * banTableModel
static constexpr auto MODEL_UPDATE_DELAY
ClientModel(interfaces::Node &node, OptionsModel *optionsModel, QObject *parent=nullptr)
std::unique_ptr< interfaces::Handler > m_handler_show_progress
OptionsModel * getOptionsModel()
std::atomic< int > cachedBestHeaderHeight
PeerTableModel * getPeerTableModel()
virtual std::unique_ptr< Handler > handleNotifyBlockTip(NotifyBlockTipFn fn)=0
void numConnectionsChanged(int count)
virtual size_t getNodeCount(ConnectionDirection flags)=0
Get number of connections.
QString getStatusBarWarnings() const
Return warnings to be displayed in status bar.
void alertsChanged(const QString &warnings)
std::unique_ptr< interfaces::Handler > m_handler_notify_block_tip
virtual std::unique_ptr< Handler > handleNotifyNumConnectionsChanged(NotifyNumConnectionsChangedFn fn)=0
void bytesChanged(quint64 totalBytesIn, quint64 totalBytesOut)
uint256 getBestBlockHash() EXCLUSIVE_LOCKS_REQUIRED(!m_cached_tip_mutex)
#define CLIENT_VERSION_IS_RELEASE
static int64_t nLastHeaderTipUpdateNotification
std::atomic< int > m_cached_num_blocks
int getNumConnections(unsigned int flags=CONNECTIONS_ALL) const
Return number of connections, default is in- and outbound (total)
enum BlockSource getBlockSource() const
Returns enum BlockSource of the current importing/syncing state.
PeerTableSortProxy * m_peer_table_sort_proxy
constexpr int64_t count_milliseconds(std::chrono::milliseconds t)
Qt model providing information about connected peers, similar to the "getpeerinfo" RPC call...
virtual bilingual_str getWarnings()=0
Get warnings.
void unsubscribeFromCoreSignals()
virtual std::unique_ptr< Handler > handleShowProgress(ShowProgressFn fn)=0
void numBlocksChanged(int count, const QDateTime &blockDate, double nVerificationProgress, SyncType header, SynchronizationState sync_state)
BanTableModel * getBanTableModel()
virtual bool getProxy(Network net, Proxy &proxy_info)=0
Get proxy.
void subscribeToCoreSignals()
std::unique_ptr< interfaces::Handler > m_handler_banned_list_changed
void TipChanged(SynchronizationState sync_state, interfaces::BlockTip tip, double verification_progress, SyncType synctype) EXCLUSIVE_LOCKS_REQUIRED(!m_cached_tip_mutex)
virtual std::unique_ptr< Handler > handleBannedListChanged(BannedListChangedFn fn)=0
std::string strSubVersion
Subversion as sent to the P2P network in version messages.
std::unique_ptr< interfaces::Handler > m_handler_notify_header_tip
#define WITH_LOCK(cs, code)
Run code while locking a mutex.
std::string FormatFullVersion()
virtual bool getReindex()=0
Get reindex.
std::unique_ptr< interfaces::Handler > m_handler_notify_num_connections_changed
virtual uint256 getBestBlockHash()=0
Get best block hash.
Interface from Qt to configuration data structure for Bitcoin client.
static int64_t nLastBlockTipUpdateNotification
Qt model providing information about connected peers, similar to the "getpeerinfo" RPC call...
std::string ToStringIPPort() const
virtual bool getHeaderTip(int &height, int64_t &block_time)=0
Get header tip height and time.
OptionsModel * optionsModel
void mempoolSizeChanged(long count, size_t mempoolSizeInBytes)
const fs::path & GetBlocksDirPath() const
Get blocks directory path.
virtual int getNumBlocks()=0
Get num blocks.
virtual std::unique_ptr< Handler > handleNotifyAlertChanged(NotifyAlertChangedFn fn)=0
std::unique_ptr< interfaces::Handler > m_handler_notify_network_active_changed
PeerTableSortProxy * peerTableSortProxy()
int getHeaderTipHeight() const
std::unique_ptr< interfaces::Handler > m_handler_notify_alert_changed
virtual std::unique_ptr< Handler > handleNotifyNetworkActiveChanged(NotifyNetworkActiveChangedFn fn)=0
virtual int64_t getTotalBytesSent()=0
Get total bytes sent.
int64_t getHeaderTipTime() const
Top-level interface for a bitcoin node (bitcoind process).
void showProgress(const QString &title, int nProgress)
QString PathToQString(const fs::path &path)
Convert OS specific boost path to QString through UTF-8.
const fs::path & GetDataDirNet() const
Get data directory path with appended network identifier.
QString formatFullVersion() const
bool getProxyInfo(std::string &ip_port) const