added refresh_all_supernodes_status method

This commit is contained in:
Abhishek Sinha 2020-03-22 20:56:01 +05:30
parent 93740fe4be
commit 45bdd9b7aa

View File

@ -12694,6 +12694,43 @@
} }
}, },
refresh_live_status_of_supernodes: async function() {
try {
promises = [];
for (const mcs in localbitcoinplusplus.myClosestSupernodes) {
let wsUri = `ws://${localbitcoinplusplus.myClosestSupernodes[mcs].ip}`;
promises.push(new Promise((resolve, reject) => {
temp_ws = new WebSocket(wsUri);
temp_ws.onopen = async function(evt) {
resolve(`${wsUri}->1`);
await localbitcoinplusplus.actions.delay(5000);
temp_ws.close();
};
temp_ws.onclose = function(evt) {
if(!evt.wasClean) {
resolve(`${wsUri}->0`);
}
};
}));
}
let supernodesCurrentStatus = await Promise.all(promises)
const switchMyWS = new backupSupernodesWebSocketObject();
for(currentwsurl of supernodesCurrentStatus) {
let split_response = currentwsurl.split('->');
let wsurl = split_response[0];
let status = split_response[1]==1 ? true:false;
await switchMyWS.updateSupernodeAvailabilityStatus(
wsurl,
status
);
}
} catch(e) {
throw new Error(e)
}
},
}; };
/*Modified functions from https://github.com/tristanls/k-bucket */ /*Modified functions from https://github.com/tristanls/k-bucket */
@ -13624,25 +13661,42 @@
} }
}); });
reactor.addEventListener("get_node_status_request", function() { // reactor.addEventListener("get_node_status_request", function() {
readAllDB("myClosestSupernodes").then(nearestSupernodeAddresslist => { // readAllDB("myClosestSupernodes").then(nearestSupernodeAddresslist => {
const RM_RPC = new localbitcoinplusplus.rpc(); // const RM_RPC = new localbitcoinplusplus.rpc();
nearestSupernodeAddresslist.map(f => { // nearestSupernodeAddresslist.map(f => {
if ( // if (
f.trader_flo_address !== // f.trader_flo_address !==
localbitcoinplusplus.wallets.my_local_flo_address // localbitcoinplusplus.wallets.my_local_flo_address
) { // ) {
RM_RPC.send_rpc // RM_RPC.send_rpc
.call(this, "is_node_alive_request", { // .call(this, "is_node_alive_request", {
JOB: "ARE_YOU_ALIVE", // JOB: "ARE_YOU_ALIVE",
trader_flo_address: // trader_flo_address:
localbitcoinplusplus.wallets.my_local_flo_address, // localbitcoinplusplus.wallets.my_local_flo_address,
receiver_flo_address: f.trader_flo_address // receiver_flo_address: f.trader_flo_address
}) // })
.then(req => doSend(req)); // .then(req => doSend(req));
} // }
}); // });
}); // });
// });
reactor.addEventListener("get_node_status_request", function() {
const msg_obj = {};
msg_obj.protocol = '__ALL_SUPERNODES_MSG__';
msg_obj.event = 'refresh_all_supernodes_status';
msg_obj.data = {request: "RESOLVE_BACKUP_WS_CONNS"};
msg_obj.initialSender = localbitcoinplusplus.wallets.my_local_flo_address;
msg_obj.su_pubKey = localbitcoinplusplus.wallets.my_local_flo_public_key;
msg_obj.hash = Crypto.SHA256(msg_obj);
msg_obj.sign = RM_WALLET.sign(
msg_obj.hash,
localbitcoinplusplus.wallets.MY_SUPERNODE_PRIVATE_KEY
);
reactor.dispatchEvent('informAllSuperNode', msg_obj);
}); });
reactor.addEventListener("sync_primary_and_backup_db", async function() { reactor.addEventListener("sync_primary_and_backup_db", async function() {
@ -13837,7 +13891,8 @@
} }
} }
// Only if a nearer Supernode than any connected Supernode can pass through // Only if a nearer Supernode than any connected Supernode can pass through
if(reqFloIdIndex>=highestIndexOfConnectedSupernode) return; if(reqFloIdIndex>=highestIndexOfConnectedSupernode
&& currenctBackupWsList.length>=localbitcoinplusplus.master_configurations.MaxBackups) return;
} }
if ( if (
@ -13888,6 +13943,10 @@
return; return;
try { try {
// Refresh Supernodes live status
await localbitcoinplusplus.actions.refresh_live_status_of_supernodes();
// Get list of neighbour supernodes // Get list of neighbour supernodes
const myClosestSups = await readAllDB("myClosestSupernodes"); const myClosestSups = await readAllDB("myClosestSupernodes");
const myClosestSupsFloList = myClosestSups.map( const myClosestSupsFloList = myClosestSups.map(
@ -14987,7 +15046,8 @@
const all_receivers_methods = [ const all_receivers_methods = [
"do_you_have_latest_data_for_this_supernode", "do_you_have_latest_data_for_this_supernode",
"sync_backup_supernode_from_backup_supernode", "sync_backup_supernode_from_backup_supernode",
"sync_backup_supernode_from_backup_supernode_response" "sync_backup_supernode_from_backup_supernode_response",
"get_node_status_request"
]; ];
if ( if (
@ -21170,6 +21230,7 @@
if(isValidMsg!==true) return; if(isValidMsg!==true) return;
debugger;
switch (res_obj.event) { switch (res_obj.event) {
case "supernode_went_down": case "supernode_went_down":
// This should be run by only 1 Supernode who is the reciever // This should be run by only 1 Supernode who is the reciever
@ -21237,6 +21298,9 @@
reactor.dispatchEvent('resolve_backup_ws_connections'); reactor.dispatchEvent('resolve_backup_ws_connections');
break; break;
case "refresh_all_supernodes_status":
reactor.dispatchEvent('resolve_backup_ws_connections');
default: default:
break; break;
} }