summaryrefslogtreecommitdiffhomepage
path: root/src/nodejs/unit-http/utils.js
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2019-08-20 16:32:05 +0300
committerMax Romanov <max.romanov@nginx.com>2019-08-20 16:32:05 +0300
commite291841b3379f8787a10ad4f91e4aeae2ae323a4 (patch)
tree49a2f4629e5b8d6cd48f7436d7eeba4c99905675 /src/nodejs/unit-http/utils.js
parente501c74ddceab86e48c031ca9b5e154f52dcdae0 (diff)
downloadunit-e291841b3379f8787a10ad4f91e4aeae2ae323a4.tar.gz
unit-e291841b3379f8787a10ad4f91e4aeae2ae323a4.tar.bz2
Node.js: introducing websocket support.
Diffstat (limited to '')
-rw-r--r--src/nodejs/unit-http/utils.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/nodejs/unit-http/utils.js b/src/nodejs/unit-http/utils.js
new file mode 100644
index 00000000..e1e51b0e
--- /dev/null
+++ b/src/nodejs/unit-http/utils.js
@@ -0,0 +1,73 @@
+var noop = exports.noop = function(){};
+
+exports.extend = function extend(dest, source) {
+ for (var prop in source) {
+ dest[prop] = source[prop];
+ }
+};
+
+exports.eventEmitterListenerCount =
+ require('events').EventEmitter.listenerCount ||
+ function(emitter, type) { return emitter.listeners(type).length; };
+
+exports.bufferAllocUnsafe = Buffer.allocUnsafe ?
+ Buffer.allocUnsafe :
+ function oldBufferAllocUnsafe(size) { return new Buffer(size); };
+
+exports.bufferFromString = Buffer.from ?
+ Buffer.from :
+ function oldBufferFromString(string, encoding) {
+ return new Buffer(string, encoding);
+ };
+
+exports.BufferingLogger = function createBufferingLogger(identifier, uniqueID) {
+ try {
+ var logFunction = require('debug')(identifier);
+ }
+ catch(e) {
+ logFunction = noop;
+ logFunction.enabled = false;
+ }
+
+ if (logFunction.enabled) {
+ var logger = new BufferingLogger(identifier, uniqueID, logFunction);
+ var debug = logger.log.bind(logger);
+ debug.printOutput = logger.printOutput.bind(logger);
+ debug.enabled = logFunction.enabled;
+ return debug;
+ }
+ logFunction.printOutput = noop;
+ return logFunction;
+};
+
+function BufferingLogger(identifier, uniqueID, logFunction) {
+ this.logFunction = logFunction;
+ this.identifier = identifier;
+ this.uniqueID = uniqueID;
+ this.buffer = [];
+}
+
+BufferingLogger.prototype.log = function() {
+ this.buffer.push([ new Date(), Array.prototype.slice.call(arguments) ]);
+ return this;
+};
+
+BufferingLogger.prototype.clear = function() {
+ this.buffer = [];
+ return this;
+};
+
+BufferingLogger.prototype.printOutput = function(logFunction) {
+ if (!logFunction) { logFunction = this.logFunction; }
+ var uniqueID = this.uniqueID;
+ this.buffer.forEach(function(entry) {
+ var date = entry[0].toLocaleString();
+ var args = entry[1].slice();
+ var formatString = args[0];
+ if (formatString !== (void 0) && formatString !== null) {
+ formatString = '%s - %s - ' + formatString.toString();
+ args.splice(0, 1, formatString, date, uniqueID);
+ logFunction.apply(global, args);
+ }
+ });
+};