kafka-node
Version:
Client for Apache Kafka v0.8+
50 lines (40 loc) • 1.17 kB
JavaScript
'use strict';
var KafkaBuffer = function (batchSize, batchAge) {
this._batch_size = batchSize;
this._batch_age = batchAge;
this._batch_age_timer = null;
this._buffer = null;
};
KafkaBuffer.prototype.addChunk = function (buffer, callback) {
if (this._buffer == null) {
this._buffer = new Buffer(buffer);
} else {
this._buffer = Buffer.concat([this._buffer, buffer]);
}
if (typeof callback !== 'undefined' && callback != null) {
if (this._batch_size == null || this._batch_age == null ||
(this._buffer && (this._buffer.length > this._batch_size))) {
callback();
} else {
this._setupTimer(callback);
}
}
};
KafkaBuffer.prototype._setupTimer = function (callback) {
var self = this;
if (this._batch_age_timer != null) {
clearTimeout(this._batch_age_timer);
}
this._batch_age_timer = setTimeout(function () {
if (self._buffer && (self._buffer.length > 0)) {
callback();
}
}, this._batch_age);
};
KafkaBuffer.prototype.getBatch = function () {
return this._buffer;
};
KafkaBuffer.prototype.truncateBatch = function () {
this._buffer = null;
};
module.exports = KafkaBuffer;