Split out screen sections into separate functions

This commit is contained in:
Jack Grigg 2016-09-04 15:18:44 +12:00
parent 4482bd8fd7
commit d30273f919
No known key found for this signature in database
GPG Key ID: 6A6914DAFBEA00DA
1 changed files with 66 additions and 53 deletions

View File

@ -61,58 +61,8 @@ void ConnectMetricsScreen()
uiInterface.InitMessage.connect(metrics_InitMessage); uiInterface.InitMessage.connect(metrics_InitMessage);
} }
int printMessageBox() void printMiningStatus(bool mining)
{ {
boost::strict_lock_ptr<std::list<std::string>> u = messageBox.synchronize();
if (u->size() == 0) {
return 0;
}
std::cout << std::endl;
std::cout << "Messages:" << std::endl;
for (auto it = u->cbegin(); it != u->cend(); ++it) {
std::cout << *it << std::endl;
}
return 2 + u->size();
}
int printInitMessage()
{
if (loaded) {
return 0;
}
std::string msg = *initMessage;
std::cout << std::endl;
std::cout << "Init message: " << msg << std::endl;
if (msg == "Done loading") {
loaded = true;
}
return 2;
}
void ThreadShowMetricsScreen()
{
// Make this thread recognisable as the metrics screen thread
RenameThread("zcash-metrics-screen");
// Clear screen
std::cout << "\e[2J";
// Print art
std::cout << METRICS_ART << std::endl;
std::cout << std::endl;
// Thank you text
std::cout << "Thank you for running a Zcash node!" << std::endl;
std::cout << "You're helping to strengthen the network and contributing to a social good :)" << std::endl;
std::cout << std::endl;
// Miner status
bool mining = GetBoolArg("-gen", false);
if (mining) { if (mining) {
int nThreads = GetArg("-genproclimit", 1); int nThreads = GetArg("-genproclimit", 1);
if (nThreads < 0) { if (nThreads < 0) {
@ -128,16 +78,12 @@ void ThreadShowMetricsScreen()
std::cout << "To enable mining, add 'gen=1' to your zcash.conf and restart." << std::endl; std::cout << "To enable mining, add 'gen=1' to your zcash.conf and restart." << std::endl;
} }
std::cout << std::endl; std::cout << std::endl;
}
// Count uptime int printMetrics(int64_t nStart, bool mining)
int64_t nStart = GetTime(); {
while (true) {
// Number of lines that are always displayed // Number of lines that are always displayed
int lines = 4; int lines = 3;
// Erase below current position
std::cout << "\e[J";
// Calculate uptime // Calculate uptime
int64_t uptime = GetTime() - nStart; int64_t uptime = GetTime() - nStart;
@ -171,13 +117,80 @@ void ThreadShowMetricsScreen()
lines++; lines++;
} }
} }
std::cout << std::endl;
// Messages return lines;
}
int printMessageBox()
{
boost::strict_lock_ptr<std::list<std::string>> u = messageBox.synchronize();
if (u->size() == 0) {
return 0;
}
std::cout << "Messages:" << std::endl;
for (auto it = u->cbegin(); it != u->cend(); ++it) {
std::cout << *it << std::endl;
}
std::cout << std::endl;
return 2 + u->size();
}
int printInitMessage()
{
if (loaded) {
return 0;
}
std::string msg = *initMessage;
std::cout << "Init message: " << msg << std::endl;
std::cout << std::endl;
if (msg == "Done loading") {
loaded = true;
}
return 2;
}
void ThreadShowMetricsScreen()
{
// Make this thread recognisable as the metrics screen thread
RenameThread("zcash-metrics-screen");
// Clear screen
std::cout << "\e[2J";
// Print art
std::cout << METRICS_ART << std::endl;
std::cout << std::endl;
// Thank you text
std::cout << "Thank you for running a Zcash node!" << std::endl;
std::cout << "You're helping to strengthen the network and contributing to a social good :)" << std::endl;
std::cout << std::endl;
// Miner status
bool mining = GetBoolArg("-gen", false);
printMiningStatus(mining);
// Count uptime
int64_t nStart = GetTime();
while (true) {
// Number of lines that are always displayed
int lines = 1;
// Erase below current position
std::cout << "\e[J";
lines += printMetrics(nStart, mining);
lines += printMessageBox(); lines += printMessageBox();
lines += printInitMessage(); lines += printInitMessage();
// Explain how to exit // Explain how to exit
std::cout << std::endl;
std::cout << "[Press Ctrl+C to exit] [Set 'showmetrics=0' to hide]" << std::endl;; std::cout << "[Press Ctrl+C to exit] [Set 'showmetrics=0' to hide]" << std::endl;;
boost::this_thread::interruption_point(); boost::this_thread::interruption_point();