@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
50 lines (49 loc) • 2.42 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.pollingManagerSSFactory = void 0;
var splitsSyncTask_1 = require("./syncTasks/splitsSyncTask");
var segmentsSyncTask_1 = require("./syncTasks/segmentsSyncTask");
var constants_1 = require("../../logger/constants");
/**
* Expose start / stop mechanism for pulling data from services.
*/
function pollingManagerSSFactory(params) {
var splitApi = params.splitApi, storage = params.storage, readiness = params.readiness, settings = params.settings;
var log = settings.log;
var splitsSyncTask = (0, splitsSyncTask_1.splitsSyncTaskFactory)(splitApi.fetchSplitChanges, storage, readiness, settings);
var segmentsSyncTask = (0, segmentsSyncTask_1.segmentsSyncTaskFactory)(splitApi.fetchSegmentChanges, storage, readiness, settings);
return {
splitsSyncTask: splitsSyncTask,
segmentsSyncTask: segmentsSyncTask,
// Start periodic fetching (polling)
start: function () {
log.info(constants_1.POLLING_START);
log.debug(constants_1.LOG_PREFIX_SYNC_POLLING + ("Splits will be refreshed each " + settings.scheduler.featuresRefreshRate + " millis"));
log.debug(constants_1.LOG_PREFIX_SYNC_POLLING + ("Segments will be refreshed each " + settings.scheduler.segmentsRefreshRate + " millis"));
var startingUp = splitsSyncTask.start();
if (startingUp) {
startingUp.then(function () {
if (splitsSyncTask.isRunning())
segmentsSyncTask.start();
});
}
},
// Stop periodic fetching (polling)
stop: function () {
log.info(constants_1.POLLING_STOP);
if (splitsSyncTask.isRunning())
splitsSyncTask.stop();
if (segmentsSyncTask.isRunning())
segmentsSyncTask.stop();
},
// Used by SyncManager to know if running in polling mode.
isRunning: splitsSyncTask.isRunning,
syncAll: function () {
// fetch splits and segments. There is no need to catch this promise (`SplitChangesUpdater` is always resolved with a boolean value)
return splitsSyncTask.execute().then(function () {
return segmentsSyncTask.execute();
});
}
};
}
exports.pollingManagerSSFactory = pollingManagerSSFactory;
;