'use strict';
/**
*
* @param eventChannel
* @param sendCallback
* @constructor
*/
SUXESS.BatchSender = function (eventChannel, sendCallback) {
this.bank = [];
this.eventChannel = eventChannel;
this.processAndSend = function () {
var batch = this.bank.splice(0, this.bank.length);
sendCallback(batch);
};
};
SUXESS.BatchSender.DEFAULT_INTERVAL = 5000;
/**
*
* @param interval
*/
SUXESS.BatchSender.prototype.start = function (interval) {
var sendInterval = interval || SUXESS.BatchSender.DEFAULT_INTERVAL;
this.subToken = PubSub.subscribe(this.eventChannel, function (_, data) {
this.bank.push(data);
}.bind(this));
this.intervalToken = setInterval(this.processAndSend.bind(this), sendInterval);
};
/**
*
*/
SUXESS.BatchSender.prototype.forceSend = function () {
this.processAndSend();
};
/**
*
*/
SUXESS.BatchSender.prototype.stop = function () {
clearInterval(this.intervalToken);
PubSub.unsubscribe(this.subToken);
};