Updates are now triggered by events at the Datasets

This commit is contained in:
Luis Fernando Molina committed 2019-09-23 11:28:59 +02:00
1 parent 53106e88f4
commit dbb2722223
4 files changed
+59 -65

No files matched your search

+3 -3
View File
@@ -82,9 +82,9 @@ function newDailyFiles () {
case GLOBAL.CUSTOM_FAIL_RESPONSE.result: {
if (err.message === 'File does not exist.') {
err.message = 'Dataset Unavailable.'
callBackFunction(err)
return
beginDateRange = new Date()
endDateRange = new Date()
break
}
if (err.message === 'Missing Configuration.') {
if (ERROR_LOG === true) { logger.write('[WARN] initialize -> onFileReceived -> The needed configuration for the dateRange at the dataSet of the product was not found.') }
+7 -51
View File
@@ -97,72 +97,28 @@ function newFileCursor () {
}
}
function updateFiles () {
function updateFiles (message) {
try {
if (finalized === true) { return }
/*
if (message.event === undefined || message.event.lastFile === undefined) { return }
In order to know if we need to update any file we follow this logic:
1. If the current date is already a file in the cursor, we need to update it.
2. If the current date is one day ahead of a file in the cursor, we need to add this one to the cursor.
*/
let targetDate
let targetDate = new Date(message.event.lastFile)
let dateString
let file
/* Situation 1 */
targetDate = new Date()
dateString = targetDate.getUTCFullYear() + '-' + pad(targetDate.getUTCMonth() + 1, 2) + '-' + pad(targetDate.getUTCDate(), 2)
file = thisObject.files.get(dateString)
if (file !== undefined) {
fileCloud.getFile(devTeam, bot, thisSet, exchange, market, periodName, targetDate, undefined, undefined, onFileReceived)
return
}
/* Situation 2 */
targetDate = new Date((new Date()).valueOf() - ONE_DAY_IN_MILISECONDS)
dateString = targetDate.getUTCFullYear() + '-' + pad(targetDate.getUTCMonth() + 1, 2) + '-' + pad(targetDate.getUTCDate(), 2)
file = thisObject.files.get(dateString) // This is from yesterday
targetDate = new Date()
dateString = targetDate.getUTCFullYear() + '-' + pad(targetDate.getUTCMonth() + 1, 2) + '-' + pad(targetDate.getUTCDate(), 2)
if (file !== undefined) {
fileCloud.getFile(devTeam, bot, thisSet, exchange, market, periodName, targetDate, undefined, undefined, onFileReceived)
return
}
fileCloud.getFile(devTeam, bot, thisSet, exchange, market, periodName, targetDate, undefined, undefined, onFileReceived)
function onFileReceived (err, file) {
try {
if (finalized === true) { return }
switch (err.result) {
case GLOBAL.DEFAULT_OK_RESPONSE.result: {
break
}
case GLOBAL.DEFAULT_FAIL_RESPONSE.result: {
return
}
default: {
return
}
if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) {
thisObject.files.set(dateString, file)
thisObject.eventHandler.raiseEvent('Files Updated')
}
thisObject.files.set(dateString, file)
thisObject.eventHandler.raiseEvent('Files Updated')
} catch (err) {
if (ERROR_LOG === true) { logger.write('[ERROR] updateFiles -> onFileReceived -> err = ' + err.stack) }
callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE)
+22 -4
View File
@@ -29,18 +29,27 @@ function newFileSequence () {
thisObject.eventHandler = newEventHandler()
let intervalHandle
let eventSubscriptionIdDatasetUpdated
return thisObject
function finalize () {
try {
clearInterval(intervalHandle)
systemEventHandler.stopListening('Dataset Updated', eventSubscriptionIdDatasetUpdated)
thisObject.eventHandler.finalize()
thisObject.eventHandler = undefined
filesLoaded = undefined
fileCloud = undefined
files = undefined
maxSequence = undefined
market = undefined
devTeam = undefined
bot = undefined
thisSet = undefined
product = undefined
finalized = true
} catch (err) {
if (ERROR_LOG === true) { logger.write('[ERROR] finalize -> err = ' + err.stack) }
@@ -55,8 +64,6 @@ function newFileSequence () {
throw 'Exchange not supoorted by this pProduct of the ecosystem! - pDevTeam.codeName = ' + pDevTeam.codeName + ', pBot.codeName = ' + pBot.codeName + ', pProduct.codeName = ' + pProduct.codeName + ', pExchange = ' + pExchange
}
intervalHandle = setInterval(updateFiles, _1_MINUTE_IN_MILISECONDS)
market = pMarket
devTeam = pDevTeam
bot = pBot
@@ -66,12 +73,20 @@ function newFileSequence () {
fileCloud = newFileCloud()
fileCloud.initialize(bot)
let key = devTeam.codeName + '-' + bot.codeName + '-' + product.codeName + '-' + thisSet.codeName
systemEventHandler.listenToEvent(key, 'Dataset Updated', undefined, key, onResponse, updateFiles)
function onResponse (message) {
eventSubscriptionIdDatasetUpdated = message.eventSubscriptionId
}
/* First we will get the sequence max number */
fileCloud.getFile(devTeam, bot, thisSet, exchange, market, undefined, undefined, 'Sequence', undefined, onSequenceFileReceived)
function onSequenceFileReceived (err, file) {
try {
if (finalized === true) { return }
initialized = true
switch (err.result) {
@@ -113,6 +128,7 @@ function newFileSequence () {
function onFileReceived (err, file) {
try {
if (finalized === true) { return }
switch (err.result) {
case GLOBAL.DEFAULT_OK_RESPONSE.result: {
break
@@ -179,6 +195,7 @@ function newFileSequence () {
function onSequenceFileReceived (err, file) {
try {
if (finalized === true) { return }
switch (err.result) {
case GLOBAL.DEFAULT_OK_RESPONSE.result: {
break
@@ -213,6 +230,7 @@ function newFileSequence () {
function onFileReceived (err, file) {
try {
if (finalized === true) { return }
switch (err.result) {
case GLOBAL.DEFAULT_OK_RESPONSE.result: {
break
+27 -7
View File
@@ -27,6 +27,7 @@ function newMarketFiles () {
let devTeam
let bot
let thisSet
let product
let periodName
thisObject.eventHandler = newEventHandler()
@@ -34,18 +35,29 @@ function newMarketFiles () {
let intervalHandle
let finalized = false
let eventSubscriptionIdDatasetUpdated
return thisObject
function finalize () {
try {
clearInterval(intervalHandle)
filesLoaded = undefined
files = undefined
finalized = true
systemEventHandler.stopListening('Dataset Updated', eventSubscriptionIdDatasetUpdated)
thisObject.eventHandler.finalize()
thisObject.eventHandler = undefined
filesLoaded = undefined
files = undefined
market = undefined
exchange = undefined
devTeam = undefined
bot = undefined
thisSet = undefined
product = undefined
periodName = undefined
finalized = true
} catch (err) {
if (ERROR_LOG === true) { logger.write('[ERROR] finalize -> err = ' + err.stack) }
}
@@ -59,12 +71,11 @@ function newMarketFiles () {
throw 'Exchange not supoorted by this pProduct of the ecosystem! - pDevTeam.codeName = ' + pDevTeam.codeName + ', pBot.codeName = ' + pBot.codeName + ', pProduct.codeName = ' + pProduct.codeName + ', pExchange = ' + pExchange
}
intervalHandle = setInterval(updateFiles, _10_MINUTES_IN_MILISECONDS)
market = pMarket
devTeam = pDevTeam
bot = pBot
thisSet = pSet
product = pProduct
fileCloud = newFileCloud()
fileCloud.initialize(pBot)
@@ -80,6 +91,7 @@ function newMarketFiles () {
function onFileReceived (err, file) {
try {
if (finalized === true) { return }
if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) {
files.set(periodTime, file)
filesLoaded++
@@ -88,7 +100,14 @@ function newMarketFiles () {
}
if (filesLoaded + filesNotLoaded === marketFilesPeriods.length) {
let key = devTeam.codeName + '-' + bot.codeName + '-' + product.codeName + '-' + thisSet.codeName
systemEventHandler.listenToEvent(key, 'Dataset Updated', undefined, key + '-' + periodName, onResponse, updateFiles)
callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, thisObject)
function onResponse (message) {
eventSubscriptionIdDatasetUpdated = message.eventSubscriptionId
}
}
} catch (err) {
if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> onFileReceived -> err = ' + err.stack) }
@@ -119,6 +138,7 @@ function newMarketFiles () {
function onFileReceived (err, file) {
try {
if (finalized === true) { return }
files.set(periodTime, file)
updatedFiles++