var log = require('hlogger').createLogger("monitor"); function ntokb(n) { var suffix = ["B","KB","MB","GB"]; var si = 0; while( n> 1024 && si< suffix.length) { n/=1024; si++; } return n.toFixed(2) + " " +suffix[si]; } var monitor = { bundleStart(context) { this.context = context; log.info("Bundle monitor started"); this.registerCommands(context); context.on('hci-config', (config) => { context.on(config,"start",function() { config.test(); }); }); }, registerCommands(context) { context .channel('core-shell:cmd') .on('stat',(req,res,e) => { this.showStat(res); // Should pass stdout }); // listen from command from ourselves /*context.on('core-shell:cmd:stat',(req,res,e) => { this.showStat(res); // Should pass stdout }).on('core-shell:cmd:gc',(req,res,e) => { gc(); }) context.on('core-shell:cmd:test',(req,res,e) => { });/**/ }, showStat(res) { var context = this.context; var obj = process.memoryUsage(); if(res == undefined) res = process.stdout; res.write("Memory Rss: " + ntokb(obj.rss) +" Total: " + ntokb(obj.heapTotal) +" Used: " + ntokb(obj.heapUsed) +"\n"); // Weird? /*res.write("Modules registered: " + context.manager.stat.modulesRegistered +" Modules UnRegistered: " + context.manager.stat.modulesUnRegistered +" events emitted: " + context.manager.events.stat.emitted +" events called: " + context.manager.events.stat.called +" events tried: " + context.manager.events.stat.tried + "\n");*/ }, // Human readable stat getStat() { var obj = {}; var mem = process.memoryUsage(); obj.mem = { rss: ntokb(mem.rss), heapTotal: ntokb(mem.heapTotal), heapUsed: ntokb(mem.heapUsed), } return obj; } }; module.exports = monitor;