From 71de99b11b29e1eead3744601de4c1732b76074f Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 17 Sep 2021 16:27:50 +0200 Subject: [PATCH] Applying events from storage implemented. --- Network/NetwokNode.js | 5 +-- NetworkRoot.js | 1 + Projects/Social-Trading/NT/Modules/Storage.js | 40 +++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/Network/NetwokNode.js b/Network/NetwokNode.js index fc8e00c2c..3d3b993dc 100644 --- a/Network/NetwokNode.js +++ b/Network/NetwokNode.js @@ -15,11 +15,10 @@ exports.newNetworkNode = function newNetworkNode() { NT.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface() NT.webSocketsInterface.initialize() - thisObject.storage = NT.projects.socialTrading.modules.storage.newSocialTradingModulesStorage() - thisObject.storage.initialize() - thisObject.socialGraphService = NT.projects.socialTrading.modules.socialGraph.newNetworkModulesSocialGraph() await thisObject.socialGraphService.initialize() + thisObject.storage = NT.projects.socialTrading.modules.storage.newSocialTradingModulesStorage() + thisObject.storage.initialize() } } diff --git a/NetworkRoot.js b/NetworkRoot.js index 9fbe271d2..a0e5bbebf 100644 --- a/NetworkRoot.js +++ b/NetworkRoot.js @@ -42,6 +42,7 @@ exports.newNetworkRoot = function newNetworkRoot() { SA.nodeModules = { fs: require('fs'), path: require('path'), + util: require('util'), nodeFetch: require('node-fetch'), web3: require('web3'), ws: require('ws'), diff --git a/Projects/Social-Trading/NT/Modules/Storage.js b/Projects/Social-Trading/NT/Modules/Storage.js index 6789e3ccc..8a966b26f 100644 --- a/Projects/Social-Trading/NT/Modules/Storage.js +++ b/Projects/Social-Trading/NT/Modules/Storage.js @@ -18,9 +18,49 @@ exports.newSocialTradingModulesStorage = function newSocialTradingModulesStorage } function initialize() { + loadEventsFromStorage() setInterval(saveEventsAtStorage, 60000) } + async function loadEventsFromStorage() { + + SA.projects.foundations.utilities.filesAndDirectories.getAllFilesInDirectoryAndSubdirectories('./My-Network-Nodes-Data/Nodes/Node-1/', onFiles) + + function onFiles(fileList) { + + for (let i = 0; i < fileList.length; i++) { + let filePath = './My-Network-Nodes-Data/Nodes/Node-1/' + fileList[i] + + for (let k = 0; k < 5; k++) { + filePath = filePath.replace('\\', '/') + } + + let fileContent = SA.nodeModules.fs.readFileSync(filePath) + + let eventsList = JSON.parse(fileContent) + + for (let j = 0; j < eventsList.length; j++) { + let storedEvent = eventsList[j] + + try { + let event = NT.projects.socialTrading.modules.event.newSocialTradingModulesEvent() + event.initialize(storedEvent) + NT.projects.socialTrading.globals.memory.maps.EVENTS.set(storedEvent.eventId, event) + NT.projects.socialTrading.globals.memory.arrays.EVENTS.push(event) + indexLastSavedEvent = NT.projects.socialTrading.globals.memory.arrays.EVENTS.length - 1 + } catch (err) { + if (err.stack !== undefined) { + console.log('[ERROR] Client Interface -> err.stack = ' + err.stack) + } + let errorMessage = err.message + if (errorMessage === undefined) { errorMessage = err } + throw ('Could not apply the events from storage. ' + errorMessage) + } + } + } + } + } + async function saveEventsAtStorage() { let oneMore = true