UNPKG

traces

Version:

Distributed tracing library

87 lines (69 loc) 1.4 kB
/** * Module dependencies. */ var axon = require('axon') , debug = require('debug')('traces'); /** * Socket. */ var sub = axon.socket('pull'); sub.format('json'); /** * Reply socket. */ var rep = axon.socket('rep'); rep.format('json'); /** * Memory "db". */ var traces = {}; /** * Expose the sockets. */ exports.sub = sub; exports.rep = rep; /** * Handle requests. */ rep.on('message', function(msg, reply){ switch (msg.type) { case 'get': debug('get %s', msg.cycle); reply(traces[msg.cycle] || {}); break; case 'get cycles': debug('get cycles'); reply(Object.keys(traces)); break; case 'clear': debug('clear %s', msg.cycle); traces[msg.cycle] = {}; reply(); break; case 'clear all': debug('clear all'); traces = {}; reply(); break } }); /** * Handle messages. */ sub.on('message', function(msg){ var id = msg.id; // cycle var cycle = (traces[msg.cycle] = traces[msg.cycle] || {}); var trace = (cycle[id] = cycle[id] || {}); var probes = (trace.probes = trace.probes || {}); var probe = (probes[msg.type] = probes[msg.type] || {}); // start if (msg.start) { debug('>> %s:%s - %j', msg.cycle, msg.type, msg); probe.start = msg.start; return; } // end debug('<< %s:%s - %j', msg.cycle, msg.type, msg); probe.end = msg.end; });