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