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