From 1729ef940d076926524d0171fc5f0565bc45e566 Mon Sep 17 00:00:00 2001 From: SergiySW Date: Fri, 4 Aug 2017 10:35:57 +0300 Subject: [PATCH 1/2] RPC peers should return network version --- rai/node/node.cpp | 11 +++++++++++ rai/node/node.hpp | 1 + rai/node/rpc.cpp | 8 +++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/rai/node/node.cpp b/rai/node/node.cpp index fcbb0254..faf7d4be 100755 --- a/rai/node/node.cpp +++ b/rai/node/node.cpp @@ -1568,6 +1568,17 @@ std::vector rai::peer_container::list () return result; } +std::map rai::peer_container::list_version () +{ + std::map result; + std::lock_guard lock (mutex); + for (auto i (peers.begin ()), j (peers.end ()); i != j; ++i) + { + result.insert (std::pair (i->endpoint, i->network_version)); + } + return result; +} + rai::endpoint rai::peer_container::bootstrap_peer () { rai::endpoint result (boost::asio::ip::address_v6::any (), 0); diff --git a/rai/node/node.hpp b/rai/node/node.hpp index 6d41e3e7..d6cdf9d1 100644 --- a/rai/node/node.hpp +++ b/rai/node/node.hpp @@ -180,6 +180,7 @@ public: std::vector representatives (size_t); // List of all peers std::vector list (); + std::map list_version (); // A list of random peers with size the square root of total peer count std::vector list_sqrt (); // Get the next peer for attempting bootstrap diff --git a/rai/node/rpc.cpp b/rai/node/rpc.cpp index 5a1257ee..8645061c 100755 --- a/rai/node/rpc.cpp +++ b/rai/node/rpc.cpp @@ -1471,14 +1471,12 @@ void rai::rpc_handler::peers () { boost::property_tree::ptree response_l; boost::property_tree::ptree peers_l; - auto peers_list (node.peers.list()); + auto peers_list (node.peers.list_version()); for (auto i (peers_list.begin ()), n (peers_list.end ()); i != n; ++i) { - boost::property_tree::ptree entry; std::stringstream text; - text << *i; - entry.put ("", text.str ()); - peers_l.push_back (std::make_pair ("", entry)); + text << i->first; + peers_l.push_back(boost::property_tree::ptree::value_type(text.str (), std::to_string (i->second))); } response_l.add_child ("peers", peers_l); response (response_l); From 9019c98ff63e909c6a9f7da66dfa37a095d97443 Mon Sep 17 00:00:00 2001 From: SergiySW Date: Fri, 4 Aug 2017 12:39:45 +0300 Subject: [PATCH 2/2] GUI peers with network version --- rai/node/node.cpp | 6 +++--- rai/node/node.hpp | 2 +- rai/node/rpc.cpp | 2 +- rai/qt/qt.cpp | 37 ++++++++++++++++++++----------------- rai/qt/qt.hpp | 4 ++-- 5 files changed, 27 insertions(+), 24 deletions(-) diff --git a/rai/node/node.cpp b/rai/node/node.cpp index faf7d4be..6a167ca2 100755 --- a/rai/node/node.cpp +++ b/rai/node/node.cpp @@ -1568,13 +1568,13 @@ std::vector rai::peer_container::list () return result; } -std::map rai::peer_container::list_version () +std::map rai::peer_container::list_version () { - std::map result; + std::map result; std::lock_guard lock (mutex); for (auto i (peers.begin ()), j (peers.end ()); i != j; ++i) { - result.insert (std::pair (i->endpoint, i->network_version)); + result.insert (std::pair (i->endpoint, i->network_version)); } return result; } diff --git a/rai/node/node.hpp b/rai/node/node.hpp index d6cdf9d1..3272c639 100644 --- a/rai/node/node.hpp +++ b/rai/node/node.hpp @@ -180,7 +180,7 @@ public: std::vector representatives (size_t); // List of all peers std::vector list (); - std::map list_version (); + std::map list_version (); // A list of random peers with size the square root of total peer count std::vector list_sqrt (); // Get the next peer for attempting bootstrap diff --git a/rai/node/rpc.cpp b/rai/node/rpc.cpp index 8645061c..d05a3744 100755 --- a/rai/node/rpc.cpp +++ b/rai/node/rpc.cpp @@ -1471,7 +1471,7 @@ void rai::rpc_handler::peers () { boost::property_tree::ptree response_l; boost::property_tree::ptree peers_l; - auto peers_list (node.peers.list_version()); + auto peers_list (node.peers.list_version ()); for (auto i (peers_list.begin ()), n (peers_list.end ()); i != n; ++i) { std::stringstream text; diff --git a/rai/qt/qt.cpp b/rai/qt/qt.cpp index b99086a0..820afe43 100755 --- a/rai/qt/qt.cpp +++ b/rai/qt/qt.cpp @@ -1445,8 +1445,8 @@ ledger_refresh (new QPushButton ("Refresh")), ledger_back (new QPushButton ("Back")), peers_window (new QWidget), peers_layout (new QVBoxLayout), -peers_model (new QStringListModel), -peers_view (new QListView), +peers_model (new QStandardItemModel), +peers_view (new QTableView), bootstrap_label (new QLabel ("IPV6:port \"::ffff:192.168.0.1:7075\"")), bootstrap_line (new QLineEdit), peers_bootstrap (new QPushButton ("Initiate Bootstrap")), @@ -1478,8 +1478,13 @@ wallet (wallet_a) ledger_layout->setContentsMargins (0, 0, 0, 0); ledger_window->setLayout (ledger_layout); + peers_model->setHorizontalHeaderItem (0, new QStandardItem ("IPv6 address:port")); + peers_model->setHorizontalHeaderItem (1, new QStandardItem ("Net version")); peers_view->setEditTriggers (QAbstractItemView::NoEditTriggers); + peers_view->verticalHeader ()->hide (); peers_view->setModel (peers_model); + peers_view->setColumnWidth(0,220); + peers_view->setSortingEnabled(true); peers_layout->addWidget (peers_view); peers_layout->addWidget (bootstrap_label); peers_layout->addWidget (bootstrap_line); @@ -1607,22 +1612,20 @@ wallet (wallet_a) void rai_qt::advanced_actions::refresh_peers () { - auto list (wallet.node.peers.list ()); - std::sort (list.begin (), list.end (), [] (rai::endpoint const & lhs, rai::endpoint const & rhs) + peers_model->removeRows (0, peers_model->rowCount ()); + auto list (wallet.node.peers.list_version ()); + for (auto i (list.begin ()), n (list.end ()); i != n; ++i) { - return lhs < rhs; - }); - QStringList peers; - for (auto i: list) - { - std::stringstream endpoint; - endpoint << i.address ().to_string (); - endpoint << ':'; - endpoint << i.port (); - QString qendpoint (endpoint.str().c_str ()); - peers << qendpoint; - } - peers_model->setStringList (peers); + std::stringstream endpoint; + endpoint << i->first.address ().to_string (); + endpoint << ':'; + endpoint << i->first.port (); + QString qendpoint (endpoint.str().c_str ()); + QList items; + items.push_back (new QStandardItem (qendpoint)); + items.push_back (new QStandardItem (QString (std::to_string (i->second).c_str ()))); + peers_model->appendRow (items); + } } void rai_qt::advanced_actions::refresh_ledger () diff --git a/rai/qt/qt.hpp b/rai/qt/qt.hpp index be68ffaa..93494951 100644 --- a/rai/qt/qt.hpp +++ b/rai/qt/qt.hpp @@ -81,8 +81,8 @@ namespace rai_qt { QWidget * peers_window; QVBoxLayout * peers_layout; - QStringListModel * peers_model; - QListView * peers_view; + QStandardItemModel * peers_model; + QTableView * peers_view; QLabel * bootstrap_label; QLineEdit * bootstrap_line; QPushButton * peers_bootstrap;