aboutsummaryrefslogtreecommitdiff
path: root/cbm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cbm.cpp')
-rw-r--r--cbm.cpp133
1 files changed, 0 insertions, 133 deletions
diff --git a/cbm.cpp b/cbm.cpp
deleted file mode 100644
index 4668534..0000000
--- a/cbm.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-#include "config.h"
-#include "statistics.hpp"
-#include <algorithm>
-#include <cstdlib>
-#include <cstring>
-#include <iomanip>
-#include <iostream>
-#include <sstream>
-
-#include <curses.h>
-#include <getopt.h>
-#include <signal.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <net/if.h>
-#include <unistd.h>
-
-#define PACKAGE "yo"
-#define PACKAGE_STRING "yo mamma"
-
-// Externs
-extern int optind, opterr, optopt;
-
-volatile bool quit = false;
-
-void endHandler(int signum) {
- quit = true;
-}
-
-void formatBandwidth(double bytesPerSecond, bool showBits) {
- const char* prefixes[] = { "", "k", "M", "G", "T", "P", "E", "Z", "Y" };
-
- // Calculate the value
- double value;
- const char* unit;
- if (showBits){
- value = bytesPerSecond * 8;
- unit = "b/s";
- }
- else {
- value = bytesPerSecond;
- unit = "B/s";
- }
-
- // Choose the prefix
- unsigned prefix = 0;
- while (prefix < (sizeof(prefixes) / sizeof(const char*)) && value > 1000.) {
- value /= 1000.;
- ++prefix;
- }
-
- // Format the string
- std::cout << std::setprecision(2) << value << " " << prefixes[prefix] << unit;
-
-}
-
-int main(int argc, char **argv) {
- int retval = EXIT_SUCCESS;
-
- // parse the command line
- int c;
-
- bool useBits = false;
- int interval = 10 * 100000;
-
- while ((c = getopt (argc, argv, "bi:hv")) != -1)
- switch (c)
- {
- case 'b':
- useBits = true;
- break;
- case 'i':
- // Magic numbers? fuck it that's not a magic number, that's a 'real' number.
- interval = atoi(optarg) * 100000;
- break;
- case 'h':
- std::cout << "USAGE: fsbm, -b specifies bits, -i sets interval in 10ths of seconds, 1 sec default\n";
- exit(EXIT_SUCCESS);
- break;
- case 'v':
- std::cout << "Version 1\n";
- exit(EXIT_SUCCESS);
- break;
- case '?':
- std::cerr << "bad flag\n";
- break;
- default:
- exit(EXIT_FAILURE);
- }
-
- // Catch SIGINT
- signal(SIGINT, endHandler);
-
-
-
- // Create a socket (for ioctls)
- int sock = socket(AF_INET, SOCK_DGRAM, 0);
- if (!sock) {
- std::cerr ("cannot open socket");
- exit(EXIT_FAILURE);
- }
-
- // Initialize curses
-
- statistics::Reader statisticsReader;
- statisticsReader.update();
- while (!quit) {
-
- // Update the statistics
- statisticsReader.update();
-
- for (statistics::Reader::Interfaces::const_iterator
- interface = statisticsReader.getInterfaces().begin();
- interface != statisticsReader.getInterfaces().end();
- ++interface) {
-
- std::cout << interface->getName() << " (";
- formatBandwidth(interface->getReceiveSpeed(), useBits);
- std::cout << ", ";
- formatBandwidth(interface->getTransmitSpeed(), useBits);
- std::cout << ")";
-
- }
- std::cout << "\n";
- usleep(interval);
-
-
-
- }
- return retval;
-}