diff options
Diffstat (limited to 'src/Client/SystemCommands.cpp')
-rw-r--r-- | src/Client/SystemCommands.cpp | 78 |
1 files changed, 43 insertions, 35 deletions
diff --git a/src/Client/SystemCommands.cpp b/src/Client/SystemCommands.cpp index 5b2d4e5..6c0f91d 100644 --- a/src/Client/SystemCommands.cpp +++ b/src/Client/SystemCommands.cpp @@ -40,53 +40,53 @@ void SystemCommands::printFSInfo(boost::shared_ptr<const Common::XmlPacket> &pac "kB", "MB", "GB", "TB", "" }; - for(size_t i = 0; i < (*packet)["filesystems"].getSize(); ++i) { - const Common::XmlPacket::Entry &fs = (*packet)["filesystems"][i]; + const Common::XmlPacket::List *list = packet->getList("filesystems"); - unsigned usedUnit = 0, totalUnit = 0; + if(list) { + for(Common::XmlPacket::List::const_iterator fs = list->begin(); fs != list->end(); ++fs) { + unsigned usedUnit = 0, totalUnit = 0; - float used = fs["usedSize"]; - float total = fs["totalSize"]; - float available = fs["availableSize"]; + float used = fs->get<float>("usedSize"); + float total = fs->get<float>("totalSize"); + float available = fs->get<float>("availableSize"); - while(used >= 1024 && !units[usedUnit+1].empty()) { - ++usedUnit; - used /= 1024; - available /= 1024; - } + while(used >= 1024 && !units[usedUnit+1].empty()) { + ++usedUnit; + used /= 1024; + available /= 1024; + } - while(total >= 1024 && !units[totalUnit+1].empty()) { - ++totalUnit; - total /= 1024; - } + while(total >= 1024 && !units[totalUnit+1].empty()) { + ++totalUnit; + total /= 1024; + } - std::string name = fs["name"]; - std::string mountedOn = fs["mountedOn"]; + std::string name = fs->get<const std::string&>("name"); + std::string mountedOn = fs->get<const std::string&>("mountedOn"); - std::string nameString = mountedOn + " (" + name + ")"; + std::string nameString = mountedOn + " (" + name + ")"; - if(nameString.length() < 32) { - nameString.resize(32, ' '); - } - else { - nameString += "\n\t"; - nameString.resize(nameString.length() + 32, ' '); - } + if(nameString.length() < 32) { + nameString.resize(32, ' '); + } + else { + nameString += "\n\t"; + nameString.resize(nameString.length() + 32, ' '); + } - std::printf("\t%s%.*f%s", nameString.c_str(), (used < 10) ? 2 : 1, used, (usedUnit == totalUnit) ? "" : (" " + units[usedUnit]).c_str()); - std::printf("/%.*f %s (%.1f%%)\n", (total < 10) ? 2 : 1, total, units[totalUnit].c_str(), std::min(100*used/(used+available), 100.0f)); + std::printf("\t%s%.*f%s", nameString.c_str(), (used < 10) ? 2 : 1, used, (usedUnit == totalUnit) ? "" : (" " + units[usedUnit]).c_str()); + std::printf("/%.*f %s (%.1f%%)\n", (total < 10) ? 2 : 1, total, units[totalUnit].c_str(), std::min(100*used/(used+available), 100.0f)); + } } std::printf("\n"); } void SystemCommands::printHostStatus(boost::shared_ptr<const Common::XmlPacket> &packet) { - unsigned long uptime = (*packet)["uptime"]; + unsigned long uptime = packet->get<unsigned long>("uptime"); if(uptime) { - unsigned long uptime = (*packet)["uptime"]; - unsigned long days = uptime/86400; unsigned long hours = (uptime%86400)/3600; unsigned long minutes = (uptime%3600)/60; @@ -97,18 +97,23 @@ void SystemCommands::printHostStatus(boost::shared_ptr<const Common::XmlPacket> std::printf("%lu:%02lu", hours, minutes); - std::printf(" (load average: %.2f %.2f %.2f, %lu processes)", (float)(*packet)["loadAvg1"], (float)(*packet)["loadAvg5"], (float)(*packet)["loadAvg15"], (unsigned long)(*packet)["nProcesses"]); + std::printf(" (load average: %.2f %.2f %.2f, %lu processes)", + packet->get<float>("loadAvg1"), packet->get<float>("loadAvg5"), + packet->get<float>("loadAvg15"), packet->get<unsigned long>("nProcesses")); std::printf("\n\n"); } - if((unsigned long)(*packet)["totalMem"] && (unsigned long)(*packet)["freeMem"]) { + float totalMem = packet->get<unsigned long>("totalMem"); + float freeMem = packet->get<unsigned long>("freeMem"); + + if(totalMem && freeMem) { const std::string units[] = { "kB", "MB", "GB", "TB", "" }; unsigned unit = 0; - float totalMem = (*packet)["totalMem"], usedMem = totalMem-(float)(*packet)["freeMem"]; + float usedMem = totalMem-freeMem; while(totalMem >= 1024 && !units[unit+1].empty()) { ++unit; @@ -119,9 +124,12 @@ void SystemCommands::printHostStatus(boost::shared_ptr<const Common::XmlPacket> std::printf("\tMemory usage:\t%.*f/%.*f %s", (usedMem < 10) ? 2 : 1, usedMem, (totalMem < 10) ? 2 : 1, totalMem, units[unit].c_str()); std::printf(" (%.1f%%)\n", usedMem*100.0f/totalMem); - if((unsigned long)(*packet)["totalSwap"] && (unsigned long)(*packet)["freeSwap"]) { + totalMem = packet->get<unsigned long>("totalSwap"); + freeMem = packet->get<unsigned long>("freeSwap"); + + if(totalMem && freeMem) { unit = 0; - totalMem = (*packet)["totalSwap"]; usedMem = totalMem-(float)(*packet)["freeSwap"]; + usedMem = totalMem-freeMem; while(totalMem >= 1024 && !units[unit+1].empty()) { ++unit; |