diff options
Diffstat (limited to 'cbm.cpp')
-rw-r--r-- | cbm.cpp | 133 |
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; -} |