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 => {