git / moonbite-core / src/qt/peertablemodel.h · raw

// Copyright (c) 2011-2020 The Bitcoin Core developers// Distributed under the MIT software license, see the accompanying// file COPYING or http://www.opensource.org/licenses/mit-license.php.#ifndef BITCOIN_QT_PEERTABLEMODEL_H#define BITCOIN_QT_PEERTABLEMODEL_H#include <net_processing.h> // For CNodeStateStats#include <net.h>#include <memory>#include <QAbstractTableModel>#include <QStringList>class PeerTablePriv;namespace interfaces {class Node;}QT_BEGIN_NAMESPACEclass QTimer;QT_END_NAMESPACEstruct CNodeCombinedStats {    CNodeStats nodeStats;    CNodeStateStats nodeStateStats;    bool fNodeStateStatsAvailable;};class NodeLessThan{public:    NodeLessThan(int nColumn, Qt::SortOrder fOrder) :        column(nColumn), order(fOrder) {}    bool operator()(const CNodeCombinedStats &left, const CNodeCombinedStats &right) const;private:    int column;    Qt::SortOrder order;};/**   Qt model providing information about connected peers, similar to the   "getpeerinfo" RPC call. Used by the rpc console UI. */class PeerTableModel : public QAbstractTableModel{    Q_OBJECTpublic:    explicit PeerTableModel(interfaces::Node& node, QObject* parent);    ~PeerTableModel();    const CNodeCombinedStats *getNodeStats(int idx);    int getRowByNodeId(NodeId nodeid);    void startAutoRefresh();    void stopAutoRefresh();    enum ColumnIndex {        NetNodeId = 0,        Address = 1,        Ping = 2,        Sent = 3,        Received = 4,        Subversion = 5    };    /** @name Methods overridden from QAbstractTableModel        @{*/    int rowCount(const QModelIndex &parent) const override;    int columnCount(const QModelIndex &parent) const override;    QVariant data(const QModelIndex &index, int role) const override;    QVariant headerData(int section, Qt::Orientation orientation, int role) const override;    QModelIndex index(int row, int column, const QModelIndex &parent) const override;    Qt::ItemFlags flags(const QModelIndex &index) const override;    void sort(int column, Qt::SortOrder order) override;    /*@}*/public Q_SLOTS:    void refresh();private:    interfaces::Node& m_node;    QStringList columns;    std::unique_ptr<PeerTablePriv> priv;    QTimer *timer;};#endif // BITCOIN_QT_PEERTABLEMODEL_H