Updating to match the backup node feature of SN
This commit is contained in:
parent
10a5393373
commit
d79d54b400
124
index.html
124
index.html
@ -5218,6 +5218,50 @@
|
||||
}
|
||||
});
|
||||
},
|
||||
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)
|
||||
var prevSupernode = []
|
||||
for(var i = 1; i <= n; i++){
|
||||
if(pos - i < 0)
|
||||
var prev = pos - i + KA.length
|
||||
else
|
||||
var prev = pos - i
|
||||
prevSupernode.push(KA[prev])
|
||||
}
|
||||
resolve(prevSupernode);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
},
|
||||
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)
|
||||
var nextSupernode = []
|
||||
for(var i = 1; i <= n; i++){
|
||||
if(pos + i >= KA.length)
|
||||
var next = pos + i - KA.length
|
||||
else
|
||||
var next = pos + i
|
||||
nextSupernode.push(KA[next])
|
||||
}
|
||||
resolve(nextSupernode);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
},
|
||||
determineClosestSupernode: function (flo_addr, n = 1, KB = this.supernodeKBucket) {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
@ -5233,42 +5277,78 @@
|
||||
}
|
||||
},
|
||||
|
||||
sendDataToSN(data, snfloID){
|
||||
return new Promise((resolve, reject) => {
|
||||
console.log(snfloID)
|
||||
var websocket = new WebSocket("wss://" + floGlobals.supernodes[snfloID].uri + "/ws");
|
||||
websocket.onmessage = (evt => {
|
||||
if(evt.data == '$+'){
|
||||
websocket.send(data);
|
||||
resolve(`Data sent to supernode : ${snfloID}`);
|
||||
}else if(evt.data == '$-'){
|
||||
this.kBucket.getNextSupernode(snfloID)
|
||||
.then(nextnode => this.sendDataToSN(data, nextnode[0].floID))
|
||||
.catch(error => reject(error))
|
||||
}else{
|
||||
console.log(evt.data)
|
||||
reject(evt.data)
|
||||
}
|
||||
websocket.close();
|
||||
})
|
||||
websocket.onerror = (evt) => {
|
||||
this.kBucket.getNextSupernode(snfloID)
|
||||
.then(nextnode => this.sendDataToSN(data, nextnode[0].floID))
|
||||
.catch(error => reject(error))
|
||||
};
|
||||
})
|
||||
},
|
||||
|
||||
//Sends data to the supernode
|
||||
sendData: function (data, floID) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.kBucket.determineClosestSupernode(floID).then(result => {
|
||||
var websocket = new WebSocket("wss://" + floGlobals.supernodes[result[0].floID].uri + "/ws");
|
||||
websocket.onopen = (evt) => {
|
||||
websocket.send(data);
|
||||
resolve(`Data sent to ${floID}'s supernode`);
|
||||
websocket.close();
|
||||
};
|
||||
websocket.onerror = (evt) => {
|
||||
reject(evt);
|
||||
};
|
||||
this.sendDataToSN(data, result[0].floID)
|
||||
.then(result => resolve(result))
|
||||
.catch(error => reject(error))
|
||||
}).catch(error => {
|
||||
reject(error);
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
requestDataFromSN(request, snfloID){
|
||||
return new Promise((resolve, reject) => {
|
||||
var websocket = new WebSocket("wss://" + floGlobals.supernodes[snfloID].uri + "/ws");
|
||||
websocket.onmessage = (evt => {
|
||||
if(evt.data == '$+'){
|
||||
websocket.send(`?${request}`);
|
||||
}else if(evt.data == '$-'){
|
||||
this.kBucket.getNextSupernode(snfloID)
|
||||
.then(nextnode => this.requestDataFromSN(request, nextnode[0].floID))
|
||||
.catch(error => reject(error))
|
||||
websocket.close()
|
||||
}else{
|
||||
resolve(evt.data);
|
||||
websocket.close();
|
||||
}
|
||||
})
|
||||
websocket.onerror = (evt) => {
|
||||
this.kBucket.getNextSupernode(snfloID)
|
||||
.then(nextnode => this.requestDataFromSN(request, nextnode[0].floID))
|
||||
.catch(error => reject(error))
|
||||
};
|
||||
})
|
||||
},
|
||||
|
||||
//Request data from supernode
|
||||
requestData: function (request, floID) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.kBucket.determineClosestSupernode(floID).then(result => {
|
||||
var websocket = new WebSocket("wss://" + floGlobals.supernodes[result[0].floID].uri + "/ws");
|
||||
websocket.onopen = (evt) => {
|
||||
websocket.send(`?${request}`);
|
||||
};
|
||||
websocket.onmessage = (evt) => {
|
||||
resolve(evt.data);
|
||||
websocket.close();
|
||||
};
|
||||
websocket.onerror = (evt) => {
|
||||
reject(evt);
|
||||
};
|
||||
this.requestDataFromSN(request, result[0].floID)
|
||||
.then(result => resolve(result))
|
||||
.catch(error => reject(error))
|
||||
}).catch(error => {
|
||||
reject(error);
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user