LCOV - code coverage report
Current view: top level - src/qt - clientmodel.h (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 0 1 0.0 %
Date: 2020-09-26 01:30:44 Functions: 0 1 0.0 %

          Line data    Source code
       1             : // Copyright (c) 2011-2019 The Bitcoin Core developers
       2             : // Distributed under the MIT software license, see the accompanying
       3             : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       4             : 
       5             : #ifndef BITCOIN_QT_CLIENTMODEL_H
       6             : #define BITCOIN_QT_CLIENTMODEL_H
       7             : 
       8             : #include <QObject>
       9             : #include <QDateTime>
      10             : 
      11             : #include <atomic>
      12             : #include <memory>
      13             : #include <sync.h>
      14             : #include <uint256.h>
      15             : 
      16             : class BanTableModel;
      17             : class CBlockIndex;
      18             : class OptionsModel;
      19             : class PeerTableModel;
      20             : enum class SynchronizationState;
      21             : 
      22             : namespace interfaces {
      23             : class Handler;
      24             : class Node;
      25             : }
      26             : 
      27             : QT_BEGIN_NAMESPACE
      28             : class QTimer;
      29             : QT_END_NAMESPACE
      30             : 
      31             : enum class BlockSource {
      32             :     NONE,
      33             :     REINDEX,
      34             :     DISK,
      35             :     NETWORK
      36             : };
      37             : 
      38             : enum NumConnections {
      39             :     CONNECTIONS_NONE = 0,
      40             :     CONNECTIONS_IN   = (1U << 0),
      41             :     CONNECTIONS_OUT  = (1U << 1),
      42             :     CONNECTIONS_ALL  = (CONNECTIONS_IN | CONNECTIONS_OUT),
      43             : };
      44             : 
      45             : /** Model for Bitcoin network client. */
      46             : class ClientModel : public QObject
      47             : {
      48             :     Q_OBJECT
      49             : 
      50             : public:
      51             :     explicit ClientModel(interfaces::Node& node, OptionsModel *optionsModel, QObject *parent = nullptr);
      52             :     ~ClientModel();
      53             : 
      54           0 :     interfaces::Node& node() const { return m_node; }
      55             :     OptionsModel *getOptionsModel();
      56             :     PeerTableModel *getPeerTableModel();
      57             :     BanTableModel *getBanTableModel();
      58             : 
      59             :     //! Return number of connections, default is in- and outbound (total)
      60             :     int getNumConnections(unsigned int flags = CONNECTIONS_ALL) const;
      61             :     int getNumBlocks() const;
      62             :     uint256 getBestBlockHash();
      63             :     int getHeaderTipHeight() const;
      64             :     int64_t getHeaderTipTime() const;
      65             : 
      66             :     //! Returns enum BlockSource of the current importing/syncing state
      67             :     enum BlockSource getBlockSource() const;
      68             :     //! Return warnings to be displayed in status bar
      69             :     QString getStatusBarWarnings() const;
      70             : 
      71             :     QString formatFullVersion() const;
      72             :     QString formatSubVersion() const;
      73             :     bool isReleaseVersion() const;
      74             :     QString formatClientStartupTime() const;
      75             :     QString dataDir() const;
      76             :     QString blocksDir() const;
      77             : 
      78             :     bool getProxyInfo(std::string& ip_port) const;
      79             : 
      80             :     // caches for the best header: hash, number of blocks and block time
      81             :     mutable std::atomic<int> cachedBestHeaderHeight;
      82             :     mutable std::atomic<int64_t> cachedBestHeaderTime;
      83             :     mutable std::atomic<int> m_cached_num_blocks{-1};
      84             : 
      85             :     Mutex m_cached_tip_mutex;
      86             :     uint256 m_cached_tip_blocks GUARDED_BY(m_cached_tip_mutex){};
      87             : 
      88             : private:
      89             :     interfaces::Node& m_node;
      90             :     std::unique_ptr<interfaces::Handler> m_handler_show_progress;
      91             :     std::unique_ptr<interfaces::Handler> m_handler_notify_num_connections_changed;
      92             :     std::unique_ptr<interfaces::Handler> m_handler_notify_network_active_changed;
      93             :     std::unique_ptr<interfaces::Handler> m_handler_notify_alert_changed;
      94             :     std::unique_ptr<interfaces::Handler> m_handler_banned_list_changed;
      95             :     std::unique_ptr<interfaces::Handler> m_handler_notify_block_tip;
      96             :     std::unique_ptr<interfaces::Handler> m_handler_notify_header_tip;
      97             :     OptionsModel *optionsModel;
      98             :     PeerTableModel *peerTableModel;
      99             :     BanTableModel *banTableModel;
     100             : 
     101             :     //! A thread to interact with m_node asynchronously
     102             :     QThread* const m_thread;
     103             : 
     104             :     void subscribeToCoreSignals();
     105             :     void unsubscribeFromCoreSignals();
     106             : 
     107             : Q_SIGNALS:
     108             :     void numConnectionsChanged(int count);
     109             :     void numBlocksChanged(int count, const QDateTime& blockDate, double nVerificationProgress, bool header, SynchronizationState sync_state);
     110             :     void mempoolSizeChanged(long count, size_t mempoolSizeInBytes);
     111             :     void networkActiveChanged(bool networkActive);
     112             :     void alertsChanged(const QString &warnings);
     113             :     void bytesChanged(quint64 totalBytesIn, quint64 totalBytesOut);
     114             : 
     115             :     //! Fired when a message should be reported to the user
     116             :     void message(const QString &title, const QString &message, unsigned int style);
     117             : 
     118             :     // Show progress dialog e.g. for verifychain
     119             :     void showProgress(const QString &title, int nProgress);
     120             : 
     121             : public Q_SLOTS:
     122             :     void updateNumConnections(int numConnections);
     123             :     void updateNetworkActive(bool networkActive);
     124             :     void updateAlert();
     125             :     void updateBanlist();
     126             : };
     127             : 
     128             : #endif // BITCOIN_QT_CLIENTMODEL_H

Generated by: LCOV version 1.15