diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2019-05-08 18:56:47 +0000 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2019-05-09 09:13:11 +0000 |
commit | 4228ee0b9ee9096cb2a49fd09d88a5f5ae96afc1 (patch) | |
tree | 804ed88faa297a335c9a7c515dc636fffc9f4315 /src/daemon/rpc_command_executor.cpp | |
parent | daemon: sort alt chains by height (diff) | |
download | monero-4228ee0b9ee9096cb2a49fd09d88a5f5ae96afc1.tar.xz |
daemon: add optional arguments to alt_chain_info
>N limits display to alt chains with more than N blocks
-N limits display to alt chains younger than N blocks
Diffstat (limited to 'src/daemon/rpc_command_executor.cpp')
-rw-r--r-- | src/daemon/rpc_command_executor.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/daemon/rpc_command_executor.cpp b/src/daemon/rpc_command_executor.cpp index 054b956ab..51fbd8628 100644 --- a/src/daemon/rpc_command_executor.cpp +++ b/src/daemon/rpc_command_executor.cpp @@ -1823,7 +1823,7 @@ bool t_rpc_command_executor::print_coinbase_tx_sum(uint64_t height, uint64_t cou return true; } -bool t_rpc_command_executor::alt_chain_info(const std::string &tip) +bool t_rpc_command_executor::alt_chain_info(const std::string &tip, size_t above, uint64_t last_blocks) { cryptonote::COMMAND_RPC_GET_INFO::request ireq; cryptonote::COMMAND_RPC_GET_INFO::response ires; @@ -1860,12 +1860,24 @@ bool t_rpc_command_executor::alt_chain_info(const std::string &tip) if (tip.empty()) { - tools::msg_writer() << boost::lexical_cast<std::string>(res.chains.size()) << " alternate chains found:"; auto chains = res.chains; std::sort(chains.begin(), chains.end(), [](const cryptonote::COMMAND_RPC_GET_ALTERNATE_CHAINS::chain_info &info0, cryptonote::COMMAND_RPC_GET_ALTERNATE_CHAINS::chain_info &info1){ return info0.height < info1.height; }); - for (const auto &chain: chains) - { - uint64_t start_height = (chain.height - chain.length + 1); + std::vector<size_t> display; + for (size_t i = 0; i < chains.size(); ++i) + { + const auto &chain = chains[i]; + if (chain.length <= above) + continue; + const uint64_t start_height = (chain.height - chain.length + 1); + if (last_blocks > 0 && ires.height - 1 - start_height >= last_blocks) + continue; + display.push_back(i); + } + tools::msg_writer() << boost::lexical_cast<std::string>(display.size()) << " alternate chains found:"; + for (const size_t idx: display) + { + const auto &chain = chains[idx]; + const uint64_t start_height = (chain.height - chain.length + 1); tools::msg_writer() << chain.length << " blocks long, from height " << start_height << " (" << (ires.height - start_height - 1) << " deep), diff " << chain.difficulty << ": " << chain.block_hash; } |