Advertisement
mrkmg

betterOS.js

Nov 28th, 2015
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'strict';
  2.  
  3. var os = require('os');
  4. var spawn = require("child_process").spawn;
  5. var cpuStats = require('cpu-stats');
  6. var async = require('async');
  7.  
  8. module.exports = function(socketManager, config)
  9. {
  10.     return new betterOS(socketManager, config);
  11. }
  12.  
  13. function betterOS(socketManager, config)
  14. {
  15.     var self = this;
  16.  
  17.     self.sender = socketManager.sender;
  18.     self.config = config;
  19.  
  20.     self.usageHistories = {
  21.         mem: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  22.         cpu: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  23.     };
  24.  
  25.     socketManager.receiver.registerHandler('getUsageHistory', function (data)
  26.     {
  27.         this.reply('usageHistory', {
  28.             mem: self.usageHistories.mem.reverse(),
  29.             cpu: self.usageHistories.cpu.reverse()
  30.         });
  31.     });
  32.  
  33.     self.runUsages();
  34. }
  35.  
  36. betterOS.prototype.runUsages = function()
  37. {
  38.     var self = this;
  39.  
  40.     async.parallel([
  41.         function (callback)
  42.         {
  43.             self.usedMem(function (usedmem)
  44.             {
  45.                 if (self.usageHistories.mem.unshift(usedmem) > 20)
  46.                 {
  47.                     self.usageHistories.mem.splice(20);
  48.                 }
  49.  
  50.                 callback();
  51.             });
  52.  
  53.         },
  54.         function (callback)
  55.         {
  56.             self.usedCpu(function (usage)
  57.             {
  58.                 if (self.usageHistories.cpu.unshift(usage) > 20)
  59.                 {
  60.                     self.usageHistories.cpu.splice(20);
  61.                 }
  62.  
  63.                 callback();
  64.             });
  65.         }
  66.     ], function (err)
  67.     {
  68.         setTimeout(function() { self.runUsages() }, 5000);
  69.         if (err)
  70.         {
  71.             console.log(err);
  72.             return;
  73.         }
  74.  
  75.         self.sender.broadcast('memoryUsage', {used: self.usageHistories.mem[0]}, 'usages');
  76.         self.sender.broadcast('cpuUsage', {usage: self.usageHistories.cpu[0]}, 'usages');
  77.     });
  78. }
  79.  
  80. betterOS.prototype.usedMem = function(callback)
  81. {
  82.     if (process.platform === "linux")
  83.     {
  84.         var prc = spawn("free", []);
  85.         prc.stdout.on("data", function (data)
  86.         {
  87.             var lines = data.toString().split(/\n/g),
  88.                 line = lines[1].split(/\s+/),
  89.                 total = parseInt(line[1], 10),
  90.                 used = parseInt(line[2], 10);
  91.  
  92.             callback(used / total);
  93.         });
  94.     }
  95.     else
  96.     {
  97.         var totalmem = os.totalmem();
  98.         var freemem = os.freemem();
  99.  
  100.         callback((totalmem - freemem) / totalmem);
  101.     }
  102. };
  103.  
  104. betterOS.prototype.usedCpu =  function(callback)
  105. {
  106.     cpuStats(500, function (err, result)
  107.     {
  108.         var usages = [];
  109.  
  110.         for (var i in result)
  111.         {
  112.             //noinspection JSUnfilteredForInLoop
  113.             var t = result[i];
  114.  
  115.             usages.push(t.cpu / 100);
  116.         }
  117.  
  118.         callback(usages.reduce(function (a, b)
  119.             {
  120.                 return a + b;
  121.             }) / usages.length);
  122.     })
  123.  
  124.  
  125. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement