Opc.Ua.Server.SamplingGroup.AdjustSamplingInterval C# (CSharp) Method

AdjustSamplingInterval() private method

Ensures the requested sampling interval lines up with one of the supported sampling rates.
private AdjustSamplingInterval ( double samplingInterval ) : double
samplingInterval double
return double
        private double AdjustSamplingInterval(double samplingInterval)
        {            
            foreach (SamplingRateGroup samplingRate in m_samplingRates)
            {
                // groups are ordered by start rate.
                if (samplingInterval <= samplingRate.Start)
                {
                    return samplingRate.Start;
                }
                
                // check if within range specfied by the group.
                double maxSamplingRate = samplingRate.Start;
                
                if (samplingRate.Increment > 0)
                {
                    maxSamplingRate += samplingRate.Increment*samplingRate.Count;
                }
                
                if (samplingInterval > maxSamplingRate)
                {
                    continue;
                }
                
                // find sampling rate within rate group.
                if (samplingInterval == maxSamplingRate)
                {
                    return maxSamplingRate;
                }

                for (double ii = samplingRate.Start; ii <= maxSamplingRate; ii += samplingRate.Increment)
                {
                    if (ii >= samplingInterval)
                    {
                        return ii;
                    }
                }
            }

            return samplingInterval;
        }