make groups of dependencyCount to do async by group

This commit is contained in:
Jonathan Rainville 2018-06-20 11:15:47 -04:00 committed by Pascal Precht
parent 0dee66bb4e
commit 38f32804f9
No known key found for this signature in database
GPG Key ID: 0EE28D8D6FD85D7D
2 changed files with 35 additions and 0 deletions

View File

@ -291,6 +291,40 @@ class ContractsManager {
} }
} }
callback(); callback();
},
function setDependencyCount(callback) {
let className;
function getDependencyCount(contractName, cycleDetector) {
if (!self.contractDependencies[contractName] || !self.contractDependencies[contractName].length) {
self.contracts[contractName].dependencyCount = 0;
return 0;
}
if (self.contracts[contractName].dependencyCount) {
// Already have that count
return self.contracts[contractName].dependencyCount;
}
let total = self.contractDependencies[contractName].length;
self.contractDependencies[contractName].some(dependencyName => {
if (cycleDetector.indexOf(dependencyName) > -1) {
// We are in a cycle because of the dependency, set both to Infinity
self.contracts[dependencyName].dependencyCount = Infinity;
total = Infinity;
return true;
}
cycleDetector.push(dependencyName);
total += getDependencyCount(dependencyName, cycleDetector);
});
self.contracts[contractName].dependencyCount = total;
return total;
}
let cycleDetector;
for (className in self.contracts) {
cycleDetector = [];
getDependencyCount(className, cycleDetector);
}
callback();
} }
], function (err) { ], function (err) {
if (err) { if (err) {

View File

@ -1,4 +1,5 @@
let async = require('async'); let async = require('async');
const _ = require('underscore');
const utils = require('../utils/utils.js'); const utils = require('../utils/utils.js');
//require("../utils/debug_util.js")(__filename, async); //require("../utils/debug_util.js")(__filename, async);