Log client startup errors to console
[KiwiIRC.git] / server / stats.js
1 module.exports = {
2 incr: function incr(stat_name, data) {
3 global.modules.emit('stat counter', {name: stat_name, data: data});
4 },
5
6 gauge: function gauge(stat_name, value) {
7 global.modules.emit('stat gauge', {name: stat_name, value: value});
8 },
9
10
11 /**
12 * Send a timer value to the stats
13 *
14 * Usage:
15 * var timer = Stats.startTimer('stat_name', {some_data: 'value'});
16 * // Do stuff
17 * timer.stop({other_data: 'value'});
18 *
19 * The object passed into .startTimer() and .stop(); are optional. If
20 * given they will be shallow merged with .stop() overridding .startTimer()
21 */
22 startTimer: function statsTimer(stat_name, data_start) {
23 var timer_started = new Date();
24
25 var timerStop = function timerStop(data_end) {
26 var time = (new Date()) - timer_started;
27 var data = shallowMergeObjects(data_start, data_end);
28
29 global.modules.emit('stat timer', {name: stat_name, time: time, data: data});
30 };
31
32 return {
33 stop: timerStop
34 };
35 }
36 };
37
38
39
40 function shallowMergeObjects(/** argn, ... **/) {
41 var arg_idx, arg,
42 data = {};
43
44 for(arg_idx=0; arg_idx<arguments.length; arg_idx++) {
45 arg = arguments[arg_idx];
46
47 if (!arg) {
48 continue;
49 }
50
51 for(var prop in arg) {
52 if (arg.hasOwnProperty(prop)) {
53 data[prop] = arg[prop];
54 }
55 }
56 }
57
58 return data;
59 }