daemon: new mining_status command

This commit is contained in:
moneromooo-monero 2019-02-22 20:17:45 +00:00
parent 31bdf7bd11
commit 59478c80dd
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
9 changed files with 134 additions and 7 deletions

View file

@ -461,7 +461,7 @@ bool t_rpc_command_executor::show_status() {
% get_sync_percentage(ires)
% (ires.testnet ? "testnet" : ires.stagenet ? "stagenet" : "mainnet")
% bootstrap_msg
% (!has_mining_info ? "mining info unavailable" : mining_busy ? "syncing" : mres.active ? ( ( mres.is_background_mining_enabled ? "smart " : "" ) + std::string("mining at ") + get_mining_speed(mres.speed) + std::string(" to ") + mres.address ) : "not mining")
% (!has_mining_info ? "mining info unavailable" : mining_busy ? "syncing" : mres.active ? ( ( mres.is_background_mining_enabled ? "smart " : "" ) + std::string("mining at ") + get_mining_speed(mres.speed)) : "not mining")
% get_mining_speed(ires.difficulty / ires.target)
% (unsigned)hfres.version
% get_fork_extra_info(hfres.earliest_height, net_height, ires.target)
@ -486,6 +486,81 @@ bool t_rpc_command_executor::show_status() {
return true;
}
bool t_rpc_command_executor::mining_status() {
cryptonote::COMMAND_RPC_MINING_STATUS::request mreq;
cryptonote::COMMAND_RPC_MINING_STATUS::response mres;
epee::json_rpc::error error_resp;
bool has_mining_info = true;
std::string fail_message = "Problem fetching info";
bool mining_busy = false;
if (m_is_rpc)
{
// mining info is only available non unrestricted RPC mode
has_mining_info = m_rpc_client->rpc_request(mreq, mres, "/mining_status", fail_message.c_str());
}
else
{
if (!m_rpc_server->on_mining_status(mreq, mres))
{
tools::fail_msg_writer() << fail_message.c_str();
return true;
}
if (mres.status == CORE_RPC_STATUS_BUSY)
{
mining_busy = true;
}
else if (mres.status != CORE_RPC_STATUS_OK)
{
tools::fail_msg_writer() << make_error(fail_message, mres.status);
return true;
}
}
if (!has_mining_info)
{
tools::fail_msg_writer() << "Mining info unavailable";
return true;
}
if (mining_busy || !mres.active)
{
tools::msg_writer() << "Not currently mining";
}
else
{
tools::msg_writer() << "Mining at " << get_mining_speed(mres.speed) << " with " << mres.threads_count << " threads";
}
if (mres.active || mres.is_background_mining_enabled)
{
tools::msg_writer() << "PoW algorithm: " << mres.pow_algorithm;
tools::msg_writer() << "Mining address: " << mres.address;
}
if (mres.is_background_mining_enabled)
{
tools::msg_writer() << "Smart mining enabled:";
tools::msg_writer() << " Target: " << (unsigned)mres.bg_target << "% CPU";
tools::msg_writer() << " Idle threshold: " << (unsigned)mres.bg_idle_threshold << "% CPU";
tools::msg_writer() << " Min idle time: " << (unsigned)mres.bg_min_idle_seconds << " seconds";
tools::msg_writer() << " Ignore battery: " << (mres.bg_ignore_battery ? "yes" : "no");
}
if (!mining_busy && mres.active)
{
uint64_t daily = 86400ull / mres.block_target * mres.block_reward;
uint64_t monthly = 86400ull / mres.block_target * 30.5 * mres.block_reward;
uint64_t yearly = 86400ull / mres.block_target * 356 * mres.block_reward;
tools::msg_writer() << "Expected: " << cryptonote::print_money(daily) << " monero daily, "
<< cryptonote::print_money(monthly) << " monero monthly, " << cryptonote::print_money(yearly) << " yearly";
}
return true;
}
bool t_rpc_command_executor::print_connections() {
cryptonote::COMMAND_RPC_GET_CONNECTIONS::request req;
cryptonote::COMMAND_RPC_GET_CONNECTIONS::response res;