mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
59 lines
2.2 KiB
JavaScript
59 lines
2.2 KiB
JavaScript
var Gun = (typeof window !== "undefined")? window.Gun : require('../gun');
|
|
|
|
Gun.on('opt', function(root){
|
|
this.to.next(root);
|
|
if(root.once){ return }
|
|
if(typeof process === 'undefined'){ return }
|
|
if(typeof require === 'undefined'){ return }
|
|
var noop = function(){};
|
|
var os = require('os') || {};
|
|
var fs = require('fs') || {};
|
|
fs.existsSync = fs.existsSync || require('path').existsSync;
|
|
if(!fs.existsSync){ return }
|
|
if(!process){ return }
|
|
process.uptime = process.uptime || noop;
|
|
process.cpuUsage = process.cpuUsage || noop;
|
|
process.memoryUsage = process.memoryUsage || noop;
|
|
os.totalmem = os.totalmem || noop;
|
|
os.freemem = os.freemem || noop;
|
|
os.loadavg = os.loadavg || noop;
|
|
os.cpus = os.cpus || noop;
|
|
setTimeout(function(){
|
|
root.stats = Gun.obj.ify((fs.existsSync(__dirname+'/../stats.'+root.opt.file) && fs.readFileSync(__dirname+'/../stats.'+root.opt.file).toString())) || {};
|
|
root.stats.up = root.stats.up || {};
|
|
root.stats.up.start = root.stats.up.start || +(new Date);
|
|
root.stats.up.count = (root.stats.up.count || 0) + 1;
|
|
root.stats.stay = root.stats.stay || {};
|
|
root.stats.gap = {};
|
|
},1);
|
|
setInterval(function(){
|
|
if(!root.stats){ root.stats = {} }
|
|
var stats = root.stats, tmp;
|
|
(stats.up||{}).time = process.uptime();
|
|
stats.memory = process.memoryUsage() || {};
|
|
stats.memory.totalmem = os.totalmem();
|
|
stats.memory.freemem = os.freemem();
|
|
stats.cpu = process.cpuUsage() || {};
|
|
stats.cpu.loadavg = os.loadavg();
|
|
stats.peers = {};
|
|
stats.peers.count = Object.keys(root.opt.peers||{}).length;
|
|
stats.node = {};
|
|
stats.node.count = Object.keys(root.graph||{}).length;
|
|
var dam = root.opt.mesh;
|
|
if(dam){
|
|
stats.dam = {'in': {count: dam.hear.c, done: dam.hear.d}, 'out': {count: dam.say.c, done: dam.say.d}};
|
|
dam.hear.c = dam.hear.d = dam.say.c = dam.say.d = 0; // reset
|
|
stats.peers.time = dam.bye.time || 0;
|
|
}
|
|
var rad = root.opt.store; rad = rad && rad.stats;
|
|
if(rad){
|
|
stats.rad = rad;
|
|
root.opt.store.stats = {get:{time:{}, count:0}, put: {time:{}, count:0}}; // reset
|
|
}
|
|
|
|
fs.writeFile(__dirname+'/../stats.'+root.opt.file, JSON.stringify(stats, null, 2), function(err){});
|
|
stats.gap = {};
|
|
}, 1000 * 15);
|
|
Object.keys = Object.keys || function(o){ return Gun.obj.map(o, function(v,k,t){t(k)}) }
|
|
});
|