Bitcoin Core 28.99.0
P2P Digital Currency
peertablesortproxy.cpp
Go to the documentation of this file.
1// Copyright (c) 2020-2022 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
6
7#include <qt/peertablemodel.h>
8#include <util/check.h>
9
10#include <QModelIndex>
11#include <QString>
12#include <QVariant>
13
15 : QSortFilterProxyModel(parent)
16{
17}
18
19bool PeerTableSortProxy::lessThan(const QModelIndex& left_index, const QModelIndex& right_index) const
20{
21 const CNodeStats left_stats = Assert(sourceModel()->data(left_index, PeerTableModel::StatsRole).value<CNodeCombinedStats*>())->nodeStats;
22 const CNodeStats right_stats = Assert(sourceModel()->data(right_index, PeerTableModel::StatsRole).value<CNodeCombinedStats*>())->nodeStats;
23
24 switch (static_cast<PeerTableModel::ColumnIndex>(left_index.column())) {
26 return left_stats.nodeid < right_stats.nodeid;
28 return left_stats.m_connected > right_stats.m_connected;
30 return left_stats.m_addr_name.compare(right_stats.m_addr_name) < 0;
32 return left_stats.fInbound > right_stats.fInbound; // default sort Inbound, then Outbound
34 return left_stats.m_conn_type < right_stats.m_conn_type;
36 return left_stats.m_network < right_stats.m_network;
38 return left_stats.m_min_ping_time < right_stats.m_min_ping_time;
40 return left_stats.nSendBytes < right_stats.nSendBytes;
42 return left_stats.nRecvBytes < right_stats.nRecvBytes;
44 return left_stats.cleanSubVer.compare(right_stats.cleanSubVer) < 0;
45 } // no default case, so the compiler can warn about missing cases
46 assert(false);
47}
#define Assert(val)
Identity function.
Definition: check.h:85
uint64_t nRecvBytes
Definition: net.h:204
bool fInbound
Definition: net.h:196
uint64_t nSendBytes
Definition: net.h:202
ConnectionType m_conn_type
Definition: net.h:218
std::chrono::microseconds m_min_ping_time
Definition: net.h:208
std::chrono::seconds m_connected
Definition: net.h:192
std::string m_addr_name
Definition: net.h:193
Network m_network
Definition: net.h:216
NodeId nodeid
Definition: net.h:187
std::string cleanSubVer
Definition: net.h:195
PeerTableSortProxy(QObject *parent=nullptr)
bool lessThan(const QModelIndex &left_index, const QModelIndex &right_index) const override
assert(!tx.IsCoinBase())