node-ldapjs/lib/dtrace.js

125 lines
3.4 KiB
JavaScript
Raw Normal View History

// Copyright 2011 Mark Cavage, Inc. All rights reserved.s
2011-08-30 00:24:50 +00:00
///--- Globals
var SERVER_PROVIDER;
2011-11-15 18:49:23 +00:00
var DTRACE_ID = 0;
var MAX_INT = 4294967295;
2011-08-30 00:24:50 +00:00
/*
* Args:
2011-11-15 18:49:23 +00:00
* server-*-start:
* 0 -> id
* 1 -> remoteIP
* 2 -> bindDN
* 3 -> req.dn
* 4,5 -> op specific
2011-11-15 18:49:23 +00:00
*
* server-*-done:
* 0 -> id
* 1 -> remoteIp
* 2 -> bindDN
* 3 -> requsetDN
* 4 -> status
* 5 -> errorMessage
*
2011-08-30 00:24:50 +00:00
*/
var SERVER_PROBES = {
// 4: attributes.length
2011-11-15 18:49:23 +00:00
'server-add-start': ['int', 'char *', 'char *', 'char *', 'int'],
'server-add-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
2011-08-30 00:24:50 +00:00
2011-11-15 18:49:23 +00:00
'server-bind-start': ['int', 'char *', 'char *', 'char *'],
'server-bind-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
2011-08-30 04:48:05 +00:00
// 4: attribute, 5: value
'server-compare-start': ['int', 'char *', 'char *', 'char *',
'char *', 'char *'],
2011-11-15 18:49:23 +00:00
'server-compare-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
2011-08-30 04:48:05 +00:00
2011-11-15 18:49:23 +00:00
'server-delete-start': ['int', 'char *', 'char *', 'char *'],
'server-delete-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
2011-08-30 04:48:05 +00:00
// 4: requestName, 5: requestValue
'server-exop-start': ['int', 'char *', 'char *', 'char *', 'char *',
'char *'],
2011-11-15 18:49:23 +00:00
'server-exop-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
2011-08-30 04:48:05 +00:00
// 4: changes.length
2011-11-15 18:49:23 +00:00
'server-modify-start': ['int', 'char *', 'char *', 'char *', 'int'],
'server-modify-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
2011-08-30 04:48:05 +00:00
// 4: newRdn, 5: newSuperior
'server-modifydn-start': ['int', 'char *', 'char *', 'char *', 'char *',
'char *'],
'server-modifydn-done': ['int', 'char *', 'char *', 'char *', 'int',
'char *'],
2011-08-30 04:48:05 +00:00
2011-11-17 19:56:19 +00:00
// 4: scope, 5: filter
'server-search-start': ['int', 'char *', 'char *', 'char *', 'char *',
'char *'],
2011-11-15 18:49:23 +00:00
'server-search-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
// Last two are searchEntry.DN and seachEntry.attributes.length
'server-search-entry': ['int', 'char *', 'char *', 'char *', 'char *', 'int'],
2011-08-30 04:48:05 +00:00
2011-11-15 18:49:23 +00:00
'server-unbind-start': ['int', 'char *', 'char *', 'char *'],
'server-unbind-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
2011-08-30 04:48:05 +00:00
'server-abandon-start': ['int', 'char *', 'char *', 'char *'],
'server-abandon-done': ['int', 'char *', 'char *', 'char *', 'int', 'char *'],
2011-08-30 04:48:05 +00:00
// remote IP
'server-connection': ['char *']
2011-08-30 00:24:50 +00:00
};
///--- API
module.exports = function () {
if (!SERVER_PROVIDER) {
try {
var dtrace = require('dtrace-provider');
2014-04-02 03:24:41 +00:00
SERVER_PROVIDER = dtrace.createDTraceProvider('ldapjs');
Object.keys(SERVER_PROBES).forEach(function (p) {
var args = SERVER_PROBES[p].splice(0);
args.unshift(p);
dtrace.DTraceProvider.prototype.addProbe.apply(SERVER_PROVIDER, args);
});
} catch (e) {
SERVER_PROVIDER = {
fire: function () {
},
enable: function () {
},
addProbe: function () {
var p = {
fire: function () {
}
};
return (p);
},
removeProbe: function () {
},
disable: function () {
}
};
}
2011-08-30 00:24:50 +00:00
SERVER_PROVIDER.enable();
2011-11-15 18:49:23 +00:00
SERVER_PROVIDER._nextId = function () {
2011-11-15 18:49:23 +00:00
if (DTRACE_ID === MAX_INT)
DTRACE_ID = 0;
return ++DTRACE_ID;
};
2011-08-30 00:24:50 +00:00
}
return SERVER_PROVIDER;
}();