Bitcoin
peertablemodel.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2018 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_PEERTABLEMODEL_H
6 #define BITCOIN_QT_PEERTABLEMODEL_H
7 
8 #include <net_processing.h> // For CNodeStateStats
9 #include <net.h>
10 
11 #include <memory>
12 
13 #include <QAbstractTableModel>
14 #include <QStringList>
15 
16 class ClientModel;
17 class PeerTablePriv;
18 
19 namespace interfaces {
20 class Node;
21 }
22 
23 QT_BEGIN_NAMESPACE
24 class QTimer;
25 QT_END_NAMESPACE
26 
31 };
32 
34 {
35 public:
36  NodeLessThan(int nColumn, Qt::SortOrder fOrder) :
37  column(nColumn), order(fOrder) {}
38  bool operator()(const CNodeCombinedStats &left, const CNodeCombinedStats &right) const;
39 
40 private:
41  int column;
42  Qt::SortOrder order;
43 };
44 
49 class PeerTableModel : public QAbstractTableModel
50 {
51  Q_OBJECT
52 
53 public:
54  explicit PeerTableModel(interfaces::Node& node, ClientModel *parent = nullptr);
56  const CNodeCombinedStats *getNodeStats(int idx);
57  int getRowByNodeId(NodeId nodeid);
58  void startAutoRefresh();
59  void stopAutoRefresh();
60 
61  enum ColumnIndex {
62  NetNodeId = 0,
63  Address = 1,
64  Ping = 2,
65  Sent = 3,
66  Received = 4,
68  };
69 
72  int rowCount(const QModelIndex &parent) const;
73  int columnCount(const QModelIndex &parent) const;
74  QVariant data(const QModelIndex &index, int role) const;
75  QVariant headerData(int section, Qt::Orientation orientation, int role) const;
76  QModelIndex index(int row, int column, const QModelIndex &parent) const;
77  Qt::ItemFlags flags(const QModelIndex &index) const;
78  void sort(int column, Qt::SortOrder order);
81 public Q_SLOTS:
82  void refresh();
83 
84 private:
87  QStringList columns;
88  std::unique_ptr<PeerTablePriv> priv;
89  QTimer *timer;
90 };
91 
92 #endif // BITCOIN_QT_PEERTABLEMODEL_H
std::unique_ptr< PeerTablePriv > priv
Definition: peertablemodel.h:88
Qt::SortOrder order
Definition: peertablemodel.h:42
Definition: peertablemodel.h:64
QVariant data(const QModelIndex &index, int role) const
Definition: peertablemodel.cpp:147
Qt::ItemFlags flags(const QModelIndex &index) const
Definition: peertablemodel.cpp:197
bool fNodeStateStatsAvailable
Definition: peertablemodel.h:30
Definition: net_processing.h:82
QModelIndex index(int row, int column, const QModelIndex &parent) const
Definition: peertablemodel.cpp:205
bool operator()(const CNodeCombinedStats &left, const CNodeCombinedStats &right) const
Definition: peertablemodel.cpp:18
Definition: peertablemodel.h:49
int rowCount(const QModelIndex &parent) const
Definition: peertablemodel.cpp:135
Definition: peertablemodel.h:33
QVariant headerData(int section, Qt::Orientation orientation, int role) const
Definition: peertablemodel.cpp:185
void startAutoRefresh()
Definition: peertablemodel.cpp:125
int column
Definition: peertablemodel.h:41
int getRowByNodeId(NodeId nodeid)
Definition: peertablemodel.cpp:227
Definition: peertablemodel.h:62
Definition: peertablemodel.cpp:46
Definition: dummywallet.cpp:11
NodeLessThan(int nColumn, Qt::SortOrder fOrder)
Definition: peertablemodel.h:36
Definition: peertablemodel.h:66
void refresh()
Definition: peertablemodel.cpp:220
PeerTableModel(interfaces::Node &node, ClientModel *parent=nullptr)
Definition: peertablemodel.cpp:102
Top-level interface for a bitcoin node (bitcoind process).
Definition: node.h:36
ClientModel * clientModel
Definition: peertablemodel.h:86
int64_t NodeId
Definition: net.h:85
CNodeStats nodeStats
Definition: peertablemodel.h:28
CNodeStateStats nodeStateStats
Definition: peertablemodel.h:29
QStringList columns
Definition: peertablemodel.h:87
Definition: peertablemodel.h:63
ColumnIndex
Definition: peertablemodel.h:61
Definition: clientmodel.h:44
void stopAutoRefresh()
Definition: peertablemodel.cpp:130
interfaces::Node & m_node
Definition: peertablemodel.h:85
const CNodeCombinedStats * getNodeStats(int idx)
Definition: peertablemodel.cpp:215
Definition: peertablemodel.h:65
Definition: peertablemodel.h:67
int columnCount(const QModelIndex &parent) const
Definition: peertablemodel.cpp:141
void sort(int column, Qt::SortOrder order)
Definition: peertablemodel.cpp:236
Definition: net.h:538
uint32_t left(uint32_t x)
Definition: sha1.cpp:28
Definition: peertablemodel.h:27
~PeerTableModel()
Definition: peertablemodel.cpp:120
QTimer * timer
Definition: peertablemodel.h:89