157 lines
6.4 KiB
JavaScript
157 lines
6.4 KiB
JavaScript
|
|
function newCompetitionStorage(pName) {
|
|
|
|
const MODULE_NAME = "Competition Storage";
|
|
const INFO_LOG = false;
|
|
const ERROR_LOG = true;
|
|
const logger = newDebugLog();
|
|
logger.fileName = MODULE_NAME;
|
|
|
|
let thisObject = {
|
|
|
|
competitorsSequences: [],
|
|
eventHandler: undefined,
|
|
initialize: initialize
|
|
|
|
}
|
|
|
|
thisObject.eventHandler = newEventHandler();
|
|
|
|
/* We name the event Handler to easy debugging. */
|
|
|
|
thisObject.eventHandler.name = "Storage-" + pName;
|
|
|
|
let fileSequences = [];
|
|
|
|
return thisObject;
|
|
|
|
function initialize(pHost, pCompetition, pExchange, pMarket, callBackFunction) {
|
|
|
|
try {
|
|
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> Entering function."); }
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> key = " + pHost.codeName + "-" + pCompetition.codeName); }
|
|
|
|
let dataSetsToLoad = 0;
|
|
let dataSetsLoaded = 0;
|
|
|
|
fileSequences = [];
|
|
|
|
for (let j = 0; j < pCompetition.participants.length; j++) {
|
|
|
|
let devTeam = ecosystem.getTeam(pCompetition.participants[j].devTeam);
|
|
let bot = ecosystem.getBot(devTeam, pCompetition.participants[j].bot)
|
|
let product = ecosystem.getProduct(bot, "Competition Trading History");
|
|
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> key = " + devTeam.codeName + "-" + bot.codeName + "-" + product.codeName); }
|
|
|
|
for (let i = 0; i < product.dataSets.length; i++) {
|
|
|
|
let thisSet = product.dataSets[i];
|
|
|
|
switch (thisSet.type) {
|
|
case 'File Sequence': {
|
|
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> File Sequence -> key = " + pHost.codeName + "-" + pCompetition.codeName + "-" + devTeam.codeName + "-" + bot.codeName + "-" + product.codeName); }
|
|
|
|
let fileSequence = newFileSequence();
|
|
fileSequence.initialize(devTeam, bot, product, thisSet, pExchange, pMarket, onFileSequenceReady);
|
|
fileSequences.push(fileSequence);
|
|
dataSetsToLoad++;
|
|
}
|
|
break;
|
|
}
|
|
|
|
function onFileSequenceReady(err, pCaller) {
|
|
|
|
try {
|
|
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> onFileSequenceReady -> Entering function."); }
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> onFileSequenceReady -> key = " + pHost.codeName + "-" + pCompetition.codeName + "-" + devTeam.codeName + "-" + bot.codeName + "-" + product.codeName); }
|
|
|
|
switch (err.result) {
|
|
case GLOBAL.DEFAULT_OK_RESPONSE.result: {
|
|
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> onFileSequenceReady -> Received OK Response."); }
|
|
break;
|
|
}
|
|
|
|
case GLOBAL.DEFAULT_FAIL_RESPONSE.result: {
|
|
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> onFileSequenceReady -> Received FAIL Response."); }
|
|
callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE);
|
|
return;
|
|
}
|
|
|
|
case GLOBAL.CUSTOM_FAIL_RESPONSE.result: {
|
|
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> onFileSequenceReady -> Received CUSTOM FAIL Response."); }
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> onFileSequenceReady -> err.message = " + err.message); }
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> onFileSequenceReady -> This bot has not starting competing yet."); }
|
|
|
|
break;
|
|
}
|
|
|
|
default: {
|
|
|
|
if (INFO_LOG === true) { logger.write("[INFO] initialize -> onFileSequenceReady -> Received Unexpected Response."); }
|
|
callBackFunction(err);
|
|
return;
|
|
}
|
|
}
|
|
|
|
let event = {
|
|
totalValue: pCaller.getExpectedFiles(),
|
|
currentValue: pCaller.getFilesLoaded()
|
|
}
|
|
|
|
thisObject.eventHandler.raiseEvent('File Sequence Loaded', event);
|
|
|
|
if (event.currentValue === event.totalValue) {
|
|
|
|
dataSetsLoaded++;
|
|
|
|
checkInitializeComplete();
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
if (ERROR_LOG === true) { logger.write("[ERROR] initialize -> onFileSequenceReady -> err = " + err); }
|
|
callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE);
|
|
}
|
|
}
|
|
|
|
function checkInitializeComplete() {
|
|
|
|
try {
|
|
|
|
if (INFO_LOG === true) { logger.write("[INFO] checkInitializeComplete -> Entering function."); }
|
|
if (INFO_LOG === true) { logger.write("[INFO] checkInitializeComplete -> key = " + pHost.codeName + "-" + pCompetition.codeName + "-" + devTeam.codeName + "-" + bot.codeName + "-" + product.codeName); }
|
|
|
|
if (dataSetsLoaded === dataSetsToLoad) {
|
|
|
|
callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE);
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
if (ERROR_LOG === true) { logger.write("[ERROR] initialize -> checkInitializeComplete -> err = " + err); }
|
|
callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
thisObject.competitorsSequences.push(fileSequences);
|
|
|
|
} catch (err) {
|
|
|
|
if (ERROR_LOG === true) { logger.write("[ERROR] initialize -> err = " + err); }
|
|
callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE);
|
|
}
|
|
}
|
|
|
|
}
|
|
|