diff --git a/lib/sender.js b/lib/sender.js index 845e492..d0a3a60 100644 --- a/lib/sender.js +++ b/lib/sender.js @@ -29,6 +29,7 @@ function FluentSender(tag_prefix, options){ this._sendQueue = []; // queue for items waiting for being sent. this._sendQueueTail = -1; this._eventEmitter = new EventEmitter(); + this._flushSendQueue = this._flushSendQueue.bind(this) } FluentSender.prototype.emit = function(/*[label] , [timestamp], [callback] */){ @@ -46,39 +47,35 @@ FluentSender.prototype.emit = function(/*[label] , [timestamp], [callback] // Last argument is an optional callback if (typeof args[0] === 'function') callback = args.shift(); - - var self = this; - var item = self._makePacketItem(label, data, timestamp); + var item = this._makePacketItem(label, data, timestamp); var error; var options; if (item.tag === null) { options = { - tag_prefix: self.tag_prefix, + tag_prefix: this.tag_prefix, label: label }; error = new FluentLoggerError.MissingTag('tag is missing', options); - self._handleEvent('error', error, callback); + this._handleEvent('error', error, callback); return; } if (typeof item.data !== 'object') { options = { - tag_prefix: self.tag_prefix, + tag_prefix: this.tag_prefix, label: label, record: item.data }; error = new FluentLoggerError.DataTypeError('data must be an object', options); - self._handleEvent('error', error, callback); + this._handleEvent('error', error, callback); return; } item.callback = callback; - self._sendQueue.push(item); - self._sendQueueTail++; - self._connect(function(){ - self._flushSendQueue(); - }); + this._sendQueue.push(item); + this._sendQueueTail++; + this._connect(this._flushSendQueue); }; ['addListener', 'on', 'once', 'removeListener', 'removeAllListeners', 'setMaxListeners', 'getMaxListeners'].forEach(function(attr, i){ @@ -115,12 +112,11 @@ FluentSender.prototype._close = function() { FluentSender.prototype._makePacketItem = function(label, data, time){ - var self = this; var tag = null; - if (self.tag_prefix && label) { - tag = self.tag_prefix + '.' + label; - } else if (self.tag_prefix) { - tag = self.tag_prefix; + if (this.tag_prefix && label) { + tag = this.tag_prefix + '.' + label; + } else if (this.tag_prefix) { + tag = this.tag_prefix; } else if (label) { tag = label; } @@ -131,7 +127,7 @@ FluentSender.prototype._makePacketItem = function(label, data, time){ var packet = [tag, time, data]; var options = {}; - if (self.requireAckResponse) { + if (this.requireAckResponse) { options = { chunk: crypto.randomBytes(16).toString('base64') }; @@ -225,10 +221,9 @@ FluentSender.prototype._flushSendQueue = function() { }; FluentSender.prototype._handleEvent = function _handleEvent(signal, data, callback) { - var self = this; callback && callback(data); - if (self._eventEmitter.listenerCount(signal) > 0) { - self._eventEmitter.emit(signal, data); + if (this._eventEmitter.listenerCount(signal) > 0) { + this._eventEmitter.emit(signal, data); } };