private bool ShouldBeStarted(IModuleDependency plugin) { var conf = _config.GetOrCreate(plugin.RepresentedModule.Name); var result = conf.StartBehaviour == ModuleStartBehaviour.Auto || plugin.Dependends.Any(ShouldBeStarted); return(result); }
private void ConvertBranch(IModuleDependency branch) { foreach (var dependend in branch.Dependends.Where(ShouldBeStarted)) { AddWaitingService(branch.RepresentedModule, dependend.RepresentedModule); ConvertBranch(dependend); } }
private int CalculateTreeDepth(int currentLevel, IModuleDependency branch) { var childLevel = currentLevel + 1; return(branch.Dependends.Any() ? branch.Dependends.Max(dependency => CalculateTreeDepth(childLevel, dependency)) : currentLevel); }