UNPKG

@splitsoftware/splitio-commons

Version:
46 lines (45 loc) 2.21 kB
import { splitsSyncTaskFactory } from './syncTasks/splitsSyncTask'; 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) { var splitApi = params.splitApi, storage = params.storage, readiness = params.readiness, settings = params.settings; var log = settings.log; var splitsSyncTask = splitsSyncTaskFactory(splitApi.fetchSplitChanges, storage, readiness, settings); var segmentsSyncTask = segmentsSyncTaskFactory(splitApi.fetchSegmentChanges, storage, readiness, settings); return { splitsSyncTask: splitsSyncTask, segmentsSyncTask: segmentsSyncTask, // Start periodic fetching (polling) start: function () { log.info(POLLING_START); log.debug(LOG_PREFIX_SYNC_POLLING + ("Splits will be refreshed each " + settings.scheduler.featuresRefreshRate + " millis")); log.debug(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(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(); }); } }; }