Name: js-handler/node_modules/restify/lib/dtrace.js 
1:
// Copyright 2012 Mark Cavage, Inc.  All rights reserved.
2:
 
3:
 
4:
 
5:
///--- Globals
6:
 
7:
var ID = 0;
8:
var MAX_INT = Math.pow(2, 32) - 1;
9:
 
10:
var PROBES = {
11:
        // server_name, route_name, id, method, url, headers (json)
12:
        'route-start': ['char *', 'char *', 'int', 'char *', 'char *', 'json'],
13:
 
14:
        // server_name, route_name, handler_name, id
15:
        'handler-start': ['char *', 'char *', 'char *', 'int'],
16:
 
17:
        // server_name, route_name, handler_name, id
18:
        'handler-done': ['char *', 'char *', 'char *', 'int'],
19:
 
20:
        // server_name, route_name, id, statusCode, headers (json)
21:
        'route-done': ['char *', 'char *', 'int', 'int', 'json'],
22:
 
23:
 
24:
        // Client probes
25:
        // method, url, headers, id
26:
        'client-request': ['char *', 'char *', 'json', 'int'],
27:
        // id, statusCode, headers
28:
        'client-response': ['int', 'int', 'json'],
29:
        // id, Error.toString()
30:
        'client-error': ['id', 'char *']
31:
};
32:
var PROVIDER;
33:
 
34:
 
35:
 
36:
///--- API
37:
 
38:
module.exports = function exportStaticProvider() {
39:
        if (!PROVIDER) {
40:
                try {
41:
                        var dtrace = require('dtrace-provider');
42:
                        PROVIDER = dtrace.createDTraceProvider('restify');
43:
                } catch (e) {
44:
                        PROVIDER = {
45:
                                fire: function () {},
46:
                                enable: function () {},
47:
                                addProbe: function () {
48:
                                        var p = {
49:
                                                fire: function () {}
50:
                                        };
51:
                                        return (p);
52:
                                },
53:
                                removeProbe: function () {},
54:
                                disable: function () {}
55:
                        };
56:
                }
57:
 
58:
                PROVIDER._rstfy_probes = {};
59:
 
60:
                Object.keys(PROBES).forEach(function (p) {
61:
                        var args = PROBES[p].splice(0);
62:
                        args.unshift(p);
63:
 
64:
                        var probe = PROVIDER.addProbe.apply(PROVIDER, args);
65:
                        PROVIDER._rstfy_probes[p] = probe;
66:
                });
67:
 
68:
                PROVIDER.enable();
69:
 
70:
                PROVIDER.nextId = function nextId() {
71:
                        if (++ID >= MAX_INT)
72:
                                ID = 1;
73:
 
74:
                        return (ID);
75:
                };
76:
        }
77:
 
78:
        return (PROVIDER);
79:
}();