pinus-robot
Version:
pinus-robot is a simple tool to benchmark the socket.io server's performance.
141 lines • 10.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createReconnectingClient = exports.readStream = exports.argarray = exports.every = exports.forEach = exports.extend = exports.defaults = exports.uid = exports.qprint = exports.qputs = exports.deleteLog = exports.createPath = exports.getPath = void 0;
// ------------------------------------
// Statistics Manager
// ------------------------------------
//
// This file defines qputs, qprint, and extends the util namespace.
//
// Extends node.js util.js with other common functions.
//
let fs = require('fs');
let getPath = function () {
let path = './';
if (__filename.indexOf('node_modules') === -1) {
path = __filename.substring(0, __filename.lastIndexOf('/')) + '/../../log';
}
else {
path = __filename.substring(0, __filename.lastIndexOf('node_modules')) + 'log';
}
return path;
};
exports.getPath = getPath;
let createPath = function () {
let path = (0, exports.getPath)();
if (!require('fs').existsSync(path)) {
fs.mkdirSync(path);
}
};
exports.createPath = createPath;
let deleteLog = function () {
let path = (0, exports.getPath)();
try {
fs.unlinkSync(path + '/detail');
fs.unlinkSync(path + '/.log');
}
catch (ex) {
}
};
exports.deleteLog = deleteLog;
// A few common global functions so we can access them with as few keystrokes as possible
//
let qputs = function (s) {
console.log(s);
};
exports.qputs = qputs;
let qprint = function (s) {
console.log(s);
};
exports.qprint = qprint;
// Static utility methods
//
let uid = function () {
exports.lastUid_ = exports.lastUid_ || 0;
return exports.lastUid_++;
};
exports.uid = uid;
let defaults = function (obj, defaults) {
for (let i in defaults) {
if (obj[i] === undefined) {
obj[i] = defaults[i];
}
}
return obj;
};
exports.defaults = defaults;
let extend = function (obj, extension) {
for (let i in extension) {
if (extension.hasOwnProperty(i)) {
obj[i] = extension[i];
}
}
return obj;
};
exports.extend = extend;
let forEach = function (obj, f) {
for (let i in obj) {
if (obj.hasOwnProperty(i)) {
f(i, obj[i]);
}
}
};
exports.forEach = forEach;
let every = function (obj, f) {
for (let i in obj) {
if (obj.hasOwnProperty(i)) {
if (!f(i, obj[i])) {
return false;
}
}
}
return true;
};
exports.every = every;
let argarray = function (args) {
return Array.prototype.slice.call(args);
};
exports.argarray = argarray;
let readStream = function (stream, callback) {
let data = [];
stream.on('data', function (chunk) {
data.push(chunk.toString());
});
stream.on('end', function () {
callback(data.join(''));
});
};
exports.readStream = readStream;
/** Same arguments as http.createClient. Returns an wrapped http.Client object that will reconnect when
connection errors are detected. In the current implementation of http.Client (11/29/10), calls to
request() fail silently after the initial 'error' event. */
let createReconnectingClient = function () {
let http = require('http'), clientArgs = arguments, events = {}, client, wrappedClient = {}, clientMethod = function (method) {
return function () { return client[method].apply(client, arguments); };
}, clientGetter = function (member) { return function () { return client[member]; }; }, clientSetter = function (member) { return function (val) { client[member] = val; }; }, reconnect = function () {
let oldclient = client;
if (oldclient) {
oldclient.destroy();
}
client = http.createClient.apply(http, clientArgs);
client._events = (0, exports.extend)(events, client._events); // EventEmitter._events stores event handlers
client.emit('reconnect', oldclient);
};
// Create initial http.Client
reconnect();
client.on('error', function (err) { reconnect(); });
// Wrap client so implementation can be swapped out when there are connection errors
for (let j in client) {
if (typeof client[j] === 'function') {
wrappedClient[j] = clientMethod(j);
}
else {
wrappedClient.__defineGetter__(j, clientGetter(j));
wrappedClient.__defineSetter__(j, clientSetter(j));
}
}
wrappedClient.impl = client;
return wrappedClient;
};
exports.createReconnectingClient = createReconnectingClient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tb24vdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx1Q0FBdUM7QUFDdkMscUJBQXFCO0FBQ3JCLHVDQUF1QztBQUN2QyxFQUFFO0FBQ0YsbUVBQW1FO0FBQ25FLEVBQUU7QUFDRix1REFBdUQ7QUFDdkQsRUFBRTtBQUdGLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVoQixJQUFJLE9BQU8sR0FBRztJQUNqQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7SUFDaEIsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQzNDLElBQUksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDO0tBQzlFO1NBQU07UUFDSCxJQUFJLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUNsRjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQVJTLFFBQUEsT0FBTyxXQVFoQjtBQUVLLElBQUksVUFBVSxHQUFHO0lBQ3BCLElBQUksSUFBSSxHQUFHLElBQUEsZUFBTyxHQUFFLENBQUM7SUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QjtBQUNMLENBQUMsQ0FBQztBQUxTLFFBQUEsVUFBVSxjQUtuQjtBQUVLLElBQUksU0FBUyxHQUFHO0lBQ25CLElBQUksSUFBSSxHQUFHLElBQUEsZUFBTyxHQUFFLENB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