From e42a972f1238da04c886667f1c086aad050a2f76 Mon Sep 17 00:00:00 2001 From: sairajzero Date: Thu, 19 Dec 2019 21:42:02 +0530 Subject: [PATCH] floCloudAPI: moving the reactor events to util and Promisifying all canon operations --- standard_Operations.html | 225 +++++++++++++++++++-------------------- 1 file changed, 112 insertions(+), 113 deletions(-) diff --git a/standard_Operations.html b/standard_Operations.html index f5d17d6..8d75b81 100644 --- a/standard_Operations.html +++ b/standard_Operations.html @@ -6835,6 +6835,61 @@ /* FLO Cloud operations to send/request application data*/ const floCloudAPI = { + util:{ + resetData: function(dataSet){ + try{ + dataSet = JSON.parse(dataSet); + console.log(dataSet) + for(vc in dataSet){ + var message = dataSet[vc].message; + if(message.reset){ + floGlobals.appObjects[message.object] = message.reset + floGlobals.vectorClock[message.object] = vc + compactIDB.writeData("appObjects", floGlobals.appObjects[message.object], message.object) + compactIDB.writeData("vectorClocks", vc, message.object) + } + } + }catch(error){ + console.error(error) + } + }, + + updateData: function(dataSet){ + try{ + dataSet = JSON.parse(dataSet); + console.log(dataSet) + for(vc in dataSet){ + var message = dataSet[vc].message; + if(message.diff){ + floGlobals.appObjects[message.object] = mergeDifference(floGlobals.appObjects[message.object], message.diff) + compactIDB.writeData("appObjects",floGlobals.appObjects[message.object], message.object) + } + floGlobals.vectorClock[message.object] = vc + compactIDB.writeData("vectorClocks", vc, message.object) + } + }catch(error){ + console.error(error) + } + }, + + storeGeneralData: function(event){ + try{ + dataSet = JSON.parse(event.dataSet); + console.log(dataSet) + if(!Array.isArray(floGlobals.generalData[event.filterStr])) + floGlobals.generalData[event.filterStr] = [] + for(vc in dataSet){ + floGlobals.generalData[event.filterStr].push({sender: dataSet[vc].senderID, vectorClock: vc, message: dataSet[vc].message}) + compactIDB.writeData("generalData", floGlobals.generalData[event.filterStr], event.filterStr) + floGlobals.generalVC[event.filterStr] = vc + compactIDB.writeData("generalVC", vc, event.filterStr) + } + }catch(error){ + console.error(error) + } + } + }, + //send Any message to supernode cloud storage sendApplicationData: function(message, type, options = {}){ return new Promise((resolve,reject) => { @@ -6876,137 +6931,81 @@ //send General Data sendGeneralData: function(message, type, options = {}){ - this.sendApplicationData(message, type, options) - .then(result => reactor.dispatchEvent('logHandle',result)) - .catch(error => reactor.dispatchEvent('errorHandle',error)) + return new Promise((resolve,reject) => { + this.sendApplicationData(message, type, options) + .then(result => resolve(result)) + .catch(error => reject(error)) + }) }, //request General Data requestGeneralData: function(type, options = {}){ - var filterStr = JSON.stringify({application: options.application || floGlobals.application, type: type, comment: options.comment}) - options.type = type - options.lowerVectorClock = options.lowerVectorClock || floGlobals.generalVC[filterStr] + 1 - this.requestApplicationData(options) - .then(dataSet => reactor.dispatchEvent("storeGeneralData", {filterStr: filterStr, dataSet:dataSet})) - .catch(error => reactor.dispatchEvent('errorHandle',error)) + return new Promise((resolve,reject) => { + var filterStr = JSON.stringify({application: options.application || floGlobals.application, type: type, comment: options.comment}) + options.type = type + options.lowerVectorClock = options.lowerVectorClock || floGlobals.generalVC[filterStr] + 1 + this.requestApplicationData(options).then(dataSet => { + this.util.storeGeneralData(filterStr, dataSet) + resolve('General Data Updated') + }).catch(error => reject(error)) + }) }, //request an object data from supernode cloud requestObjectData: function(objectName, options = {}){ - var request = { - receiverID: options.receiverID || floGlobals.adminID, - senderIDs: (options.senderIDs === false) ? false: options.senderIDs || floGlobals.subAdmins, - application: options.application || floGlobals.application, - comment: options.comment, - type: `${objectName}@Reset`, - lowerVectorClock: floGlobals.vectorClock[objectName]+1, - mostRecent: true - } - floSupernode.requestData(JSON.stringify(request),request.receiverID).then(resetData => { - reactor.dispatchEvent('resetData', resetData); - request.type = `${objectName}@Update` - request.lowerVectorClock = floGlobals.vectorClock[objectName]+1 - request.mostRecent = false - floSupernode.requestData(JSON.stringify(request), request.receiverID) - .then(updateData => reactor.dispatchEvent('updateData', updateData)) - }).catch(error => reactor.dispatchEvent('errorHandle', error)) + return new Promise((resolve,reject) => { + var request = { + receiverID: options.receiverID || floGlobals.adminID, + senderIDs: (options.senderIDs === false) ? false: options.senderIDs || floGlobals.subAdmins, + application: options.application || floGlobals.application, + comment: options.comment, + type: `${objectName}@Reset`, + lowerVectorClock: floGlobals.vectorClock[objectName]+1, + mostRecent: true + } + floSupernode.requestData(JSON.stringify(request),request.receiverID).then(dataSet => { + this.util.resetData(filterStr, dataSet) + request.type = `${objectName}@Update` + request.lowerVectorClock = floGlobals.vectorClock[objectName]+1 + request.mostRecent = false + floSupernode.requestData(JSON.stringify(request), request.receiverID).then(dataSet => { + this.util.updateData(filterStr, dataSet) + resolve('Object Data Updated') + }).catch(error => reject(error)) + }).catch(error => reject(error)) + }) }, //reset or initialize an object and send it to cloud resetObjectData: function(newObject, objectName, options = {}){ - var message = { - division: options.division || floGlobals.division, - object: objectName, - vectorClock: floGlobals.vectorClock[objectName], - reset: newObject - } - this.sendApplicationData(message, `${objectName}@Reset`, options) - .then(result => reactor.dispatchEvent('logHandle',result)) - .catch(error => reactor.dispatchEvent('errorHandle',error)) + return new Promise((resolve,reject) => { + var message = { + division: options.division || floGlobals.division, + object: objectName, + vectorClock: floGlobals.vectorClock[objectName], + reset: newObject + } + this.sendApplicationData(message, `${objectName}@Reset`, options) + .then(result => resolve(result)) + .catch(error => reject(error)) + }) }, //update the diff and send it to cloud updateObjectData: function(oldObject, newObject, objectName, options = {}){ - var message = { - division: options.division || floGlobals.division, - object: objectName, - vectorClock: floGlobals.vectorClock[objectName], - diff: findDifference(oldObject, newObject) - } - this.sendApplicationData(message, `${objectName}@Update`, options) - .then(result => reactor.dispatchEvent('logHandle',result)) - .catch(error => reactor.dispatchEvent('errorHandle',error)) + return new Promise((resolve,reject) => { + var message = { + division: options.division || floGlobals.division, + object: objectName, + vectorClock: floGlobals.vectorClock[objectName], + diff: findDifference(oldObject, newObject) + } + this.sendApplicationData(message, `${objectName}@Update`, options) + .then(result => resolve(result)) + .catch(error => reject(error)) + }) } } - - reactor.registerEvent('resetData'); - reactor.addEventListener('resetData', function(dataSet){ - try{ - dataSet = JSON.parse(dataSet); - console.log(dataSet) - for(vc in dataSet){ - //if(floGlobals.subAdmins.includes(dataSet[vc].senderID)){ - var message = dataSet[vc].message; - if(message.reset){ - floGlobals.appObjects[message.object] = message.reset - floGlobals.vectorClock[message.object] = vc - compactIDB.writeData("appObjects", floGlobals.appObjects[message.object], message.object) - compactIDB.writeData("vectorClocks", vc, message.object) - } - //} - } - }catch(error){ - console.log(error) - } - }); - - reactor.registerEvent('updateData'); - reactor.addEventListener('updateData', function(dataSet){ - try{ - dataSet = JSON.parse(dataSet); - console.log(dataSet) - for(vc in dataSet){ - //if(floGlobals.subAdmins.includes(dataSet[vc].senderID)){ - var message = dataSet[vc].message; - if(message.diff){ - floGlobals.appObjects[message.object] = mergeDifference(floGlobals.appObjects[message.object], message.diff) - compactIDB.writeData("appObjects",floGlobals.appObjects[message.object], message.object) - } - //} - floGlobals.vectorClock[message.object] = vc - compactIDB.writeData("vectorClocks", vc, message.object) - } - }catch(error){ - console.log(error) - } - }); - - reactor.registerEvent('storeGeneralData'); - reactor.addEventListener('storeGeneralData', function(event){ - try{ - dataSet = JSON.parse(event.dataSet); - console.log(dataSet) - if(!Array.isArray(floGlobals.generalData[event.filterStr])) - floGlobals.generalData[event.filterStr] = [] - for(vc in dataSet){ - floGlobals.generalData[event.filterStr].push({sender: dataSet[vc].senderID, vectorClock: vc, message: dataSet[vc].message}) - compactIDB.writeData("generalData", floGlobals.generalData[event.filterStr], event.filterStr) - floGlobals.generalVC[event.filterStr] = vc - compactIDB.writeData("generalVC", vc, event.filterStr) - } - }catch(error){ - console.log(error) - } - }); - - reactor.registerEvent('errorHandle'); - reactor.addEventListener('errorHandle', function(event){ - console.log(event) - }); - reactor.registerEvent('logHandle'); - reactor.addEventListener('logHandle', function(event){ - console.log(event) - });