1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | var SERVER_PROVIDER;
|
8 | var DTRACE_ID = 0;
|
9 | var MAX_INT = 4294967295;
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 | var SERVER_PROBES = {
|
30 |
|
31 |
|
32 | 'server-add-start': ['int', 'char *', 'char *', 'char *', 'int'],
|
33 | 'server-add-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
|
34 |
|
35 | 'server-bind-start': ['int', 'char *', 'char *', 'char *'],
|
36 | 'server-bind-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
|
37 |
|
38 |
|
39 | 'server-compare-start': ['int', 'char *', 'char *', 'char *',
|
40 | 'char *', 'char *'],
|
41 | 'server-compare-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
|
42 |
|
43 | 'server-delete-start': ['int', 'char *', 'char *', 'char *'],
|
44 | 'server-delete-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
|
45 |
|
46 |
|
47 | 'server-exop-start': ['int', 'char *', 'char *', 'char *', 'char *',
|
48 | 'char *'],
|
49 | 'server-exop-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
|
50 |
|
51 |
|
52 | 'server-modify-start': ['int', 'char *', 'char *', 'char *', 'int'],
|
53 | 'server-modify-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
|
54 |
|
55 |
|
56 | 'server-modifydn-start': ['int', 'char *', 'char *', 'char *', 'char *',
|
57 | 'char *'],
|
58 | 'server-modifydn-done': ['int', 'char *', 'char *', 'char *', 'int',
|
59 | 'char *'],
|
60 |
|
61 |
|
62 | 'server-search-start': ['int', 'char *', 'char *', 'char *', 'char *',
|
63 | 'char *'],
|
64 | 'server-search-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
|
65 |
|
66 | 'server-search-entry': ['int', 'char *', 'char *', 'char *', 'char *', 'int'],
|
67 |
|
68 | 'server-unbind-start': ['int', 'char *', 'char *', 'char *'],
|
69 | 'server-unbind-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
|
70 |
|
71 | 'server-abandon-start': ['int', 'char *', 'char *', 'char *'],
|
72 | 'server-abandon-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
|
73 |
|
74 |
|
75 | 'server-connection': ['char *']
|
76 | };
|
77 |
|
78 |
|
79 |
|
80 |
|
81 | module.exports = function () {
|
82 | if (!SERVER_PROVIDER) {
|
83 | try {
|
84 | var dtrace = require('dtrace-provider');
|
85 | SERVER_PROVIDER = dtrace.createDTraceProvider('ldapjs');
|
86 |
|
87 | Object.keys(SERVER_PROBES).forEach(function (p) {
|
88 | var args = SERVER_PROBES[p].splice(0);
|
89 | args.unshift(p);
|
90 |
|
91 | dtrace.DTraceProvider.prototype.addProbe.apply(SERVER_PROVIDER, args);
|
92 | });
|
93 | } catch (e) {
|
94 | SERVER_PROVIDER = {
|
95 | fire: function () {
|
96 | },
|
97 | enable: function () {
|
98 | },
|
99 | addProbe: function () {
|
100 | var p = {
|
101 | fire: function () {
|
102 | }
|
103 | };
|
104 | return (p);
|
105 | },
|
106 | removeProbe: function () {
|
107 | },
|
108 | disable: function () {
|
109 | }
|
110 | };
|
111 | }
|
112 |
|
113 | SERVER_PROVIDER.enable();
|
114 |
|
115 | SERVER_PROVIDER._nextId = function () {
|
116 | if (DTRACE_ID === MAX_INT)
|
117 | DTRACE_ID = 0;
|
118 |
|
119 | return ++DTRACE_ID;
|
120 | };
|
121 | }
|
122 |
|
123 | return SERVER_PROVIDER;
|
124 | }();
|