UNPKG

pinus-robot

Version:

pinus-robot is a simple tool to benchmark the socket.io server's performance.

141 lines 10.4 kB
"use strict"; 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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