instrumentation/hrktorrent: add time sampling macro; use two-decimal floating point...
authorP2P-Next <p2p-next@cs.pub.ro>
Sat, 14 Aug 2010 11:15:02 +0000 (14:15 +0300)
committerP2P-Next <p2p-next@cs.pub.ro>
Sat, 14 Aug 2010 11:15:02 +0000 (14:15 +0300)
instrumentation/hrktorrent/core.cpp

index 3f53046..013dd4d 100644 (file)
@@ -62,6 +62,25 @@ PrintStatusStream(std::stringstream &output, int columns, int stdout_is_tty)
        std::cout.flush();\r
 }\r
 \r
+#define SAMPLING_TIME  5\r
+\r
+static char const* time_now_string()\r
+{\r
+       time_t t = std::time(0);\r
+       static char str[200];\r
+\r
+       tm* timeinfo = std::localtime(&t);\r
+       std::strftime(str, 200, "%b %d %X", timeinfo);\r
+       return str;\r
+}\r
+\r
+static time_t time_now_seconds()\r
+{\r
+       time_t t = std::time(0);\r
+\r
+       return t;\r
+}\r
+\r
 void*\r
 CCore::StatusLoop(void* data)\r
 {\r
@@ -121,8 +140,8 @@ CCore::StatusLoop(void* data)
                if(Settings->GetI("dht") > 0) \r
                        output << ", dht: " << sstatus.dht_nodes;\r
                output << " <> ";\r
-               output << "dl: " << Round(sstatus.download_rate/1024, 2) << "kb/s, ";\r
-               output << "ul: " << Round(sstatus.upload_rate/1024, 2) << "kb/s <> ";\r
+               output << "dl: " << Round(sstatus.download_rate/1024.0, 2) << "kb/s, ";\r
+               output << "ul: " << Round(sstatus.upload_rate/1024.0, 2) << "kb/s <> ";\r
                output << "dld: " << tstatus.total_done/1048576 << "mb, ";\r
                output << "uld: " << sstatus.total_payload_upload/1048576 << "mb, ";\r
                output << "size: " << tstatus.total_wanted/1048576 << "mb <> ";\r
@@ -144,16 +163,23 @@ CCore::StatusLoop(void* data)
                PrintStatusStream(output, columns, stdout_is_tty);\r
                output.str("");\r
 \r
-               output << "--Peers: ";\r
+               /* print peer information each SAMPLING_TIME seconds */\r
+               loopcount++;\r
+               if (time_now_seconds() % SAMPLING_TIME != 0) {\r
+                       sleep(1);\r
+                       continue;\r
+               }\r
 \r
                /* build peer status message */\r
+               output << "--Peers: (" << time_now_string() << ") ";\r
+\r
                t->get_peer_info(peers);\r
 \r
                std::vector<libtorrent::peer_info>::iterator it = peers.begin();\r
                while (it != peers.end()) {\r
                        output << "[ ip: " << it->ip;\r
-                       output << ", dl: " << Round(it->down_speed/1024, 2);\r
-                       output << ", ul: " << Round(it->up_speed/1024, 2);\r
+                       output << ", dl: " << Round(it->down_speed/1024.0, 2) << "kb/s";\r
+                       output << ", ul: " << Round(it->up_speed/1024.0, 2) << "kb/s";\r
                        output << " ]";\r
                        it++;\r
                }\r
@@ -162,7 +188,6 @@ CCore::StatusLoop(void* data)
                output.str("");\r
 \r
                sleep(1);\r
-               loopcount++;\r
        }\r
 \r
        return 0;\r