//returns list of those nodes that need to be participated in sharing load from Source node. private ArrayList FilterCandidateNodes() { ArrayList dataListForNodes = _nodeBalData.BalanceDataListForNodes; ArrayList filteredNodes = new ArrayList(); int totalPercentMissing = 0; int percentMissing = 0; int percentShareToGain = 0; //total percentage that the candidate nodes are missing... foreach (BalanceDataForNode balData in dataListForNodes) { if (balData.TotalWeight < _nodeBalData.WeightPerNode) { totalPercentMissing += _nodeBalData.PercentWeightPerNode - balData.PercentData; } } //Assigning each candidate node its share from the Source node. foreach (BalanceDataForNode balData in dataListForNodes) { if (balData.TotalWeight < _nodeBalData.WeightPerNode) { long weightToGain = 0; percentMissing = _nodeBalData.PercentWeightPerNode - balData.PercentData; try { percentShareToGain = Convert.ToInt32((double)((double)percentMissing / (double)totalPercentMissing) * 100); weightToGain = Convert.ToInt64((double)(percentShareToGain * this._weightToMove) / (double)100); } catch (Exception) { } AddressWeightPair awPair = new AddressWeightPair(balData.NodeAddress, weightToGain); filteredNodes.Add(awPair); } } return(filteredNodes); }
//returns list of those nodes that need to be participated in sharing load from Source node. private ArrayList FilterCandidateNodes() { ArrayList dataListForNodes = _nodeBalData.BalanceDataListForNodes; ArrayList filteredNodes = new ArrayList(); int totalPercentMissing = 0; int percentMissing = 0; int percentShareToGain = 0; //total percentage that the candidate nodes are missing... foreach (BalanceDataForNode balData in dataListForNodes) { if (balData.TotalWeight < _nodeBalData.WeightPerNode) { totalPercentMissing += _nodeBalData.PercentWeightPerNode - balData.PercentData; } } //Assigning each candidate node its share from the Source node. foreach (BalanceDataForNode balData in dataListForNodes) { if (balData.TotalWeight < _nodeBalData.WeightPerNode) { long weightToGain = 0; percentMissing = _nodeBalData.PercentWeightPerNode - balData.PercentData; try { percentShareToGain = Convert.ToInt32((double)((double)percentMissing / (double)totalPercentMissing) * 100); weightToGain = Convert.ToInt64((double)(percentShareToGain * this._weightToMove) / (double)100); } catch (Exception) { } AddressWeightPair awPair = new AddressWeightPair(balData.NodeAddress, weightToGain); filteredNodes.Add(awPair); } } return filteredNodes; }