int-cli
Version:
INT is the new generation of bottom-up created system of IoT and blockchain
39 lines (38 loc) • 1.44 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const error_code_1 = require("../error_code");
function instance(superClass) {
return class extends superClass {
constructor(...args) {
super(...args.slice(1));
this.m_staticPeers = (args[0]).slice(0);
}
async randomPeers(count, excludes) {
const doubleCount = 2 * count;
if (this.m_staticPeers.length) {
let inc = [];
for (const peerid of this.m_staticPeers) {
if (!excludes.has(peerid)) {
inc.push(peerid);
}
}
if (inc.length <= doubleCount) {
return { err: error_code_1.ErrorCode.RESULT_OK, peers: inc };
}
else {
const start = Math.floor(inc.length * Math.random());
let peers = [];
peers.push(...inc.slice(start));
if (peers.length <= doubleCount) {
peers.push(...inc.slice(doubleCount - peers.length));
}
return { err: error_code_1.ErrorCode.RESULT_OK, peers };
}
}
else {
return { err: error_code_1.ErrorCode.RESULT_SKIPPED, peers: [] };
}
}
};
}
exports.instance = instance;
;