diff --git a/standard_Operations.html b/standard_Operations.html index a1e55bc..7e9cf66 100644 --- a/standard_Operations.html +++ b/standard_Operations.html @@ -6129,31 +6129,60 @@ this.addContact(decodedId, address, KB); }, isNodePresent: function (flo_id, KB = this.supernodeKBucket) { + let kArray = KB.toArray(); + let kArrayFloIds = kArray.map(k => k.floID); + if (kArrayFloIds.includes(flo_id)) + return true; + else + return false; + }, + + getInnerNodes: function(flo_addr1, flo_addr2, KB = this.supernodeKBucket){ return new Promise((resolve, reject) => { - let kArray = KB.toArray(); - let kArrayFloIds = kArray.map(k => k.data.id); - if (kArrayFloIds.includes(flo_id)) { - resolve(true); - } else { - reject(false); - } + let kArrayFloIds = KB.toArray().map(k => k.floID); + var innerNodes = [] + if(kArrayFloIds.includes(flo_addr1) && kArrayFloIds.includes(flo_addr2)){ + for(var i = kArrayFloIds.indexOf(flo_addr1); i!= flo_addr2; i++){ + if(i >= kArrayFloIds.length) + i = -1 + else + innerNodes.push(kArrayFloIds[i]) + } + resolve(innerNodes) + }else + reject('Given nodes are not in KBucket') }); }, + + getOuterNodes: function(flo_addr1, flo_addr2, KB = this.supernodeKBucket){ + return new Promise((resolve, reject) => { + let kArrayFloIds = KB.toArray().map(k => k.floID); + var outterNodes = [] + if(kArrayFloIds.includes(flo_addr1) && kArrayFloIds.includes(flo_addr2)){ + for(var i = kArrayFloIds.indexOf(flo_addr2); i!= flo_addr1; i++){ + if(i >= kArrayFloIds.length) + i = -1 + else + outterNodes.push(kArrayFloIds[i]) + } + resolve(outterNodes) + }else + reject('Given nodes are not in KBucket') + }); + }, + getPrevSupernode: function(flo_addr, n = 1, KB = this.supernodeKBucket){ return new Promise((resolve, reject) => { try { - let isFloIdUint8 = flo_addr instanceof Uint8Array; - if (!isFloIdUint8) - flo_addr = this.floIdToKbucketId(flo_addr); - const KA = KB.toArray(); - let pos = KB._indexOf(KB.root,flo_addr) + let kArrayFloIds = KB.toArray().map(k => k.floID); + let pos = kArrayFloIds.indexOf(flo_addr) var prevSupernode = [] for(var i = 1; i <= n; i++){ if(pos - i < 0) - var prev = pos - i + KA.length + var prev = pos - i + kArrayFloIds.length else var prev = pos - i - prevSupernode.push(KA[prev]) + prevSupernode.push(kArrayFloIds[prev]) } resolve(prevSupernode); } catch (error) { @@ -6161,21 +6190,19 @@ } }); }, + getNextSupernode: function(flo_addr, n = 1, KB = this.supernodeKBucket){ return new Promise((resolve, reject) => { try { - let isFloIdUint8 = flo_addr instanceof Uint8Array; - if (!isFloIdUint8) - flo_addr = this.floIdToKbucketId(flo_addr); - const KA = KB.toArray(); - let pos = KB._indexOf(KB.root,flo_addr) + let kArrayFloIds = KB.toArray().map(k => k.floID); + let pos = kArrayFloIds.indexOf(flo_addr) var nextSupernode = [] for(var i = 1; i <= n; i++){ - if(pos + i >= KA.length) - var next = pos + i - KA.length + if(pos + i >= kArrayFloIds.length) + var next = pos + i - kArrayFloIds.length else var next = pos + i - nextSupernode.push(KA[next]) + nextSupernode.push(kArrayFloIds[next]) } resolve(nextSupernode); } catch (error) { @@ -6183,13 +6210,15 @@ } }); }, + determineClosestSupernode: function (flo_addr, n = 1, KB = this.supernodeKBucket) { return new Promise((resolve, reject) => { try { let isFloIdUint8 = flo_addr instanceof Uint8Array; if (!isFloIdUint8) flo_addr = this.floIdToKbucketId(flo_addr); - const closestSupernode = KB.closest(flo_addr, n); + var closestSupernode = KB.closest(flo_addr, n); + closestSupernode = closestSupernode.map(k => k.floID); resolve(closestSupernode); } catch (error) { reject(error); @@ -6208,7 +6237,7 @@ resolve(`Data sent to supernode : ${snfloID}`); }else if(evt.data == '$-'){ this.kBucket.getNextSupernode(snfloID) - .then(nextnode => this.sendDataToSN(data, nextnode[0].floID)) + .then(nextNode => this.sendDataToSN(data, nextNode[0])) .catch(error => reject(error)) }else{ console.log(evt.data) @@ -6218,7 +6247,7 @@ }) websocket.onerror = (evt) => { this.kBucket.getNextSupernode(snfloID) - .then(nextnode => this.sendDataToSN(data, nextnode[0].floID)) + .then(nextNode => this.sendDataToSN(data, nextNode[0])) .catch(error => reject(error)) }; }) @@ -6227,8 +6256,8 @@ //Sends data to the supernode sendData: function (data, floID) { return new Promise((resolve, reject) => { - this.kBucket.determineClosestSupernode(floID).then(result => { - this.sendDataToSN(data, result[0].floID) + this.kBucket.determineClosestSupernode(floID).then(closestNode => { + this.sendDataToSN(data, closestNode[0]) .then(result => resolve(result)) .catch(error => reject(error)) }).catch(error => { @@ -6245,7 +6274,7 @@ websocket.send(`?${request}`); }else if(evt.data == '$-'){ this.kBucket.getNextSupernode(snfloID) - .then(nextnode => this.requestDataFromSN(request, nextnode[0].floID)) + .then(nextNode => this.requestDataFromSN(request, nextNode[0])) .catch(error => reject(error)) websocket.close() }else{ @@ -6255,7 +6284,7 @@ }) websocket.onerror = (evt) => { this.kBucket.getNextSupernode(snfloID) - .then(nextnode => this.requestDataFromSN(request, nextnode[0].floID)) + .then(nextNode => this.requestDataFromSN(request, nextNode[0])) .catch(error => reject(error)) }; }) @@ -6264,8 +6293,8 @@ //Request data from supernode requestData: function (request, floID) { return new Promise((resolve, reject) => { - this.kBucket.determineClosestSupernode(floID).then(result => { - this.requestDataFromSN(request, result[0].floID) + this.kBucket.determineClosestSupernode(floID).then(closestNode => { + this.requestDataFromSN(request, closestNode[0]) .then(result => resolve(result)) .catch(error => reject(error)) }).catch(error => {