From 945c835057c3c09e6972b0e1a21f59e4fad37492 Mon Sep 17 00:00:00 2001 From: Yosi Attias Date: Wed, 29 Apr 2020 17:46:36 +0300 Subject: [PATCH] Add hooking points for instrumentation Instead of hooking methods, changing a bit the parser to return raw event and parsed event --- index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/index.js b/index.js index 102615a..1db8aa1 100644 --- a/index.js +++ b/index.js @@ -8,6 +8,10 @@ var Emitter = require('component-emitter'); var binary = require('./binary'); var isArray = require('isarray'); var isBuf = require('./is-buffer'); +const EventEmitter = require('events'); + +const metricsEmitter = new EventEmitter(); +exports.metricsEmitter = metricsEmitter; /** * Protocol version. @@ -132,6 +136,7 @@ Encoder.prototype.encode = function(obj, callback){ encodeAsBinary(obj, callback); } else { var encoding = encodeAsString(obj); + metricsEmitter.emit('outgoing-packet', { packet: obj, raw: encoding }); callback([encoding]); } }; @@ -248,6 +253,7 @@ Decoder.prototype.add = function(obj) { this.emit('decoded', packet); } } else { // non-binary full packet + metricsEmitter.emit('incoming-packet', { raw: obj, packet }) this.emit('decoded', packet); } } else if (isBuf(obj) || obj.base64) { // raw binary data