示例#1
0
        //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);
        }
示例#2
0
        //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;
        }