diff --git a/standard_Operations.html b/standard_Operations.html
index a3756d6..0a25e3c 100644
--- a/standard_Operations.html
+++ b/standard_Operations.html
@@ -22,7 +22,7 @@
fee: 0.0005,
//Required for Supernode operations
- SNStorageID: "FEzk75EGMPEQMrCuPosGiwuK162hcEu49E",
+ SNStorageID: "FR876VRTna3DremwQKZ421xPGMTREzctRB",
supernodes: {}, //each supnernode must be stored as floID : {uri:,pubKey:}
//for cloud apps
@@ -7915,7 +7915,7 @@ Bitcoin.Util = {
closestOf: function (floID, n, KB) {
let decodedId = this.decodeID(floID);
- return KB.closest(flo_addr, n)
+ return KB.closest(decodedId, n)
},
constructKB: function (list, refID) {
@@ -7940,8 +7940,6 @@ Bitcoin.Util = {
])
.sort((a, b) => a[0] - b[0])
.map(a => a[1])
- console.log(this.SNCO)
- console.log(this.SNKB)
resolve('Supernode KBucket formed');
} catch (error) {
reject(error);
@@ -7973,10 +7971,10 @@ Bitcoin.Util = {
return oNodes
},
- prevNode: function (id, n = 1) {
+ prevNode: function (id, N = 1) {
+ let n = N || this.SNCO.length;
if (!this.SNCO.includes(id))
throw Error('Given node is not supernode');
- if (!n) n = this.SNCO.length;
let pNodes = []
for (let i = 0, j = this.SNCO.indexOf(id) - 1; i < n; j--) {
if (j == this.SNCO.indexOf(id))
@@ -7985,10 +7983,11 @@ Bitcoin.Util = {
pNodes[i++] = this.SNCO[j]
else j = this.SNCO.length
}
- return (n == 1 ? pNodes[0] : pNodes)
+ return (N == 1 ? pNodes[0] : pNodes)
},
- nextNode: function (id, n = 1) {
+ nextNode: function (id, N = 1) {
+ let n = N || this.SNCO.length;
if (!this.SNCO.includes(id))
throw Error('Given node is not supernode');
if (!n) n = this.SNCO.length;
@@ -8000,12 +7999,15 @@ Bitcoin.Util = {
nNodes[i++] = this.SNCO[j]
else j = -1
}
- return (n == 1 ? nNodes[0] : nNodes)
+ return (N == 1 ? nNodes[0] : nNodes)
},
- closestNode: function (id, n = 1) {
- let cNodes = this.util.closestOf(id, n).map(k => k.floID)
- return (n == 1 ? cNodes[0] : cNodes)
+ closestNode: function (id, N = 1) {
+ let decodedId = this.util.decodeID(id);
+ let n = N || this.SNCO.length;
+ let cNodes = this.SNKB.closest(decodedId, n)
+ .map(k => k.floID)
+ return (N == 1 ? cNodes[0] : cNodes)
}
},
@@ -8055,7 +8057,7 @@ Bitcoin.Util = {
let data = JSON.parse(evt.data.substring(42))
resolve(data)
} catch (error) {
- reject(error)
+ reject(evt.data.substring(42))
} finally {
node.close()
}
@@ -8065,9 +8067,9 @@ Bitcoin.Util = {
});
},
- liveRequest: function (floID, request, callback) {
+ liveRequest: function (floID, datareq, callback) {
request = {
- ...request
+ ...datareq.request
};
const checkFilter = (v, d, r) =>
(!r.atVectorClock || r.atVectorClock == v) &&
@@ -8081,7 +8083,7 @@ Bitcoin.Util = {
return new Promise((resolve, reject) => {
this.connectActive(floID).then(node => {
let randID = floCrypto.randString(5);
- node.send(`${floID}|${randID}:${JSON.stringify({request})}`);
+ node.send(`${floID}|${randID}:${JSON.stringify(datareq)}`);
node.onmessage = (evt) => {
if (evt.data.startsWith(randID, 1))
var i = 42
@@ -8115,7 +8117,7 @@ Bitcoin.Util = {
},
filterKey: function (type, options) {
- return type + (comment ? ':' + comment : '') +
+ return type + (options.comment ? ':' + options.comment : '') +
'|' + (options.receiverID || floGlobals.adminID) +
'|' + (options.application || floGlobals.application);
},
@@ -8212,19 +8214,21 @@ Bitcoin.Util = {
atVectorClock: options.atVectorClock || undefined,
mostRecent: options.mostRecent || undefined,
}
+ var datareq = {
+ time: Date.now(),
+ request
+ }
if (options.callback instanceof Function) {
let callback = (d, e) => {
for (let v in d)
d[v].message = this.util.decodeMessage(d[v].message)
options.callback(d, e)
}
- this.util.liveRequest(request.receiverID, request, callback)
+ this.util.liveRequest(request.receiverID, datareq, callback)
.then(result => resolve(result))
.catch(error => reject(error))
} else {
- this.util.singleRequest(request.receiverID, {
- request
- }).then(data => {
+ this.util.singleRequest(request.receiverID, datareq).then(data => {
for (let v in data)
data[v].message = this.util.decodeMessage(data[v].message)
resolve(data)
@@ -8248,8 +8252,8 @@ Bitcoin.Util = {
this.util.singleRequest(delreq.requestorID, delreq).then(result => {
let success = [],
failed = [];
- for (let i in result)
- (result[i] ? success : failed).push(delreq.delete[i])
+ result.forEach(r => r.status === 'fulfilled' ?
+ success.push(r.value): failed.push(r.reason));
resolve({
success,
failed