@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
46 lines (45 loc) • 2.35 kB
JavaScript
import { definitionsSyncTaskFactory } from './syncTasks/definitionsSyncTask';
import { segmentsSyncTaskFactory } from './syncTasks/segmentsSyncTask';
import { POLLING_START, POLLING_STOP, LOG_PREFIX_SYNC_POLLING } from '../../logger/constants';
/**
* Expose start / stop mechanism for pulling data from services.
*/
export function pollingManagerSSFactory(params, definitionChangesFetcher, segmentChangesFetcher) {
var storage = params.storage, readiness = params.readiness, settings = params.settings;
var log = settings.log;
var segmentsSyncTask = segmentsSyncTaskFactory(segmentChangesFetcher, storage, readiness, settings);
var definitionsSyncTask = definitionsSyncTaskFactory(definitionChangesFetcher, storage, readiness, settings, segmentsSyncTask);
return {
definitionsSyncTask: definitionsSyncTask,
segmentsSyncTask: segmentsSyncTask,
// Start periodic fetching (polling)
start: function () {
log.info(POLLING_START);
log.debug(LOG_PREFIX_SYNC_POLLING + "".concat(definitionChangesFetcher.type, " will be refreshed each ").concat(settings.scheduler.featuresRefreshRate, " millis"));
log.debug(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(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();
});
}
};
}