mirror of
https://github.com/monero-project/monero.git
synced 2024-12-23 12:09:54 +00:00
daemon: extend 'print_pl' command, optional filter by type and limit
This commit is contained in:
parent
ed54ac8fdf
commit
d294a577fa
4 changed files with 44 additions and 8 deletions
|
@ -48,9 +48,34 @@ t_command_parser_executor::t_command_parser_executor(
|
||||||
|
|
||||||
bool t_command_parser_executor::print_peer_list(const std::vector<std::string>& args)
|
bool t_command_parser_executor::print_peer_list(const std::vector<std::string>& args)
|
||||||
{
|
{
|
||||||
if (!args.empty()) return false;
|
if (args.size() > 3)
|
||||||
|
{
|
||||||
|
std::cout << "use: print_pl [white] [gray] [<limit>]" << std::endl;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return m_executor.print_peer_list();
|
bool white = false;
|
||||||
|
bool gray = false;
|
||||||
|
size_t limit = 0;
|
||||||
|
for (size_t i = 0; i < args.size(); ++i)
|
||||||
|
{
|
||||||
|
if (args[i] == "white")
|
||||||
|
{
|
||||||
|
white = true;
|
||||||
|
}
|
||||||
|
else if (args[i] == "gray")
|
||||||
|
{
|
||||||
|
gray = true;
|
||||||
|
}
|
||||||
|
else if (!epee::string_tools::get_xtype_from_string(limit, args[i]))
|
||||||
|
{
|
||||||
|
std::cout << "unexpected argument: " << args[i] << std::endl;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const bool print_both = !white && !gray;
|
||||||
|
return m_executor.print_peer_list(white | print_both, gray | print_both, limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool t_command_parser_executor::print_peer_list_stats(const std::vector<std::string>& args)
|
bool t_command_parser_executor::print_peer_list_stats(const std::vector<std::string>& args)
|
||||||
|
|
|
@ -64,6 +64,7 @@ t_command_server::t_command_server(
|
||||||
m_command_lookup.set_handler(
|
m_command_lookup.set_handler(
|
||||||
"print_pl"
|
"print_pl"
|
||||||
, std::bind(&t_command_parser_executor::print_peer_list, &m_parser, p::_1)
|
, std::bind(&t_command_parser_executor::print_peer_list, &m_parser, p::_1)
|
||||||
|
, "print_pl [white] [gray] [<limit>]"
|
||||||
, "Print the current peer list."
|
, "Print the current peer list."
|
||||||
);
|
);
|
||||||
m_command_lookup.set_handler(
|
m_command_lookup.set_handler(
|
||||||
|
|
|
@ -154,7 +154,7 @@ t_rpc_command_executor::~t_rpc_command_executor()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool t_rpc_command_executor::print_peer_list() {
|
bool t_rpc_command_executor::print_peer_list(bool white, bool gray, size_t limit) {
|
||||||
cryptonote::COMMAND_RPC_GET_PEER_LIST::request req;
|
cryptonote::COMMAND_RPC_GET_PEER_LIST::request req;
|
||||||
cryptonote::COMMAND_RPC_GET_PEER_LIST::response res;
|
cryptonote::COMMAND_RPC_GET_PEER_LIST::response res;
|
||||||
|
|
||||||
|
@ -175,14 +175,24 @@ bool t_rpc_command_executor::print_peer_list() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto & peer : res.white_list)
|
if (white)
|
||||||
{
|
{
|
||||||
print_peer("white", peer);
|
auto peer = res.white_list.cbegin();
|
||||||
|
const auto end = limit ? peer + std::min(limit, res.white_list.size()) : res.white_list.cend();
|
||||||
|
for (; peer != end; ++peer)
|
||||||
|
{
|
||||||
|
print_peer("white", *peer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto & peer : res.gray_list)
|
if (gray)
|
||||||
{
|
{
|
||||||
print_peer("gray", peer);
|
auto peer = res.gray_list.cbegin();
|
||||||
|
const auto end = limit ? peer + std::min(limit, res.gray_list.size()) : res.gray_list.cend();
|
||||||
|
for (; peer != end; ++peer)
|
||||||
|
{
|
||||||
|
print_peer("gray", *peer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -67,7 +67,7 @@ public:
|
||||||
|
|
||||||
~t_rpc_command_executor();
|
~t_rpc_command_executor();
|
||||||
|
|
||||||
bool print_peer_list();
|
bool print_peer_list(bool white = true, bool gray = true, size_t limit = 0);
|
||||||
|
|
||||||
bool print_peer_list_stats();
|
bool print_peer_list_stats();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue