lichao
2021-06-01 72851db66655912cb9c92300a80985fb9797d168
box/status_main.cc
@@ -31,8 +31,22 @@
int status_main(int argc, char const *argv[])
{
   auto &shm = BHomeShm();
   AppArg args(argc, argv);
   auto shm_name = args.Get("shm", BHomeShm().name());
   auto shm_size = std::atol(args.Get("size", "").c_str());
   if (shm_size <= 0 || shm_size > 512) {
      shm_size = 50;
   }
   auto DisplayName = [&]() -> std::string {
      if (shm_name == BHomeShm().name()) {
         return "[bhome shm]";
      } else {
         return shm_name;
      }
   };
   printf("monitoring shm : %s, size : %ldM\n", DisplayName().c_str(), shm_size);
   SharedMemory shm(shm_name, 1024 * 1024 * shm_size);
   std::atomic<bool> run(true);
   auto Now = []() { return steady_clock::now(); };
@@ -41,7 +55,7 @@
   auto showStatus = [&]() {
      auto next = Now();
      const uint64_t start = ToMs(next);
      auto last = 0;
      auto last = 0ul;
      while (run) {
         std::this_thread::sleep_until(next);
         auto passed = ToMs(next) - start;
@@ -62,19 +76,19 @@
            int nkb = left / Kb;
            int nb = left - nkb * Kb;
            char buf[64] = {0};
            int n = sprintf(buf, " %4dMb %4dKb %4dB", nmb, nkb, nb);
            int start = (nmb > 0) ? 0 : ((nkb > 0) ? 7 : 14);
            int n = sprintf(buf, " %4dM%4dK%4dB", nmb, nkb, nb);
            int start = (nmb > 0) ? 0 : ((nkb > 0) ? 5 : 10);
            buf[start] = sign;
            return std::string(buf + start);
         };
         char buf[200] = "\n";
         auto Print = [&](bool new_line) {
            int n = sprintf(buf, "\r%6ds avail : %12ld = %s %6ds", sec, cur, Pretty(cur).c_str() + 1, sec);
            int n = sprintf(buf, "\r%6lds avail : %12ld = %s %6lds", sec, cur, Pretty(cur).c_str() + 1, sec);
            printf("%s", buf);
            if (new_line) {
               auto diff = cur - last;
               printf(" (%+ld = %s)\n", diff, Pretty(diff).c_str());
               printf(" (%+6ld = %s)\n", diff, Pretty(diff).c_str());
               printf("%s", buf);
            }
            fflush(stdout);