Opc.Ua.Server.SubscriptionManager.CalculateLifetimeCount C# (CSharp) Method

CalculateLifetimeCount() protected method

Calculates the lifetime count.
protected CalculateLifetimeCount ( double publishingInterval, uint keepAliveCount, uint lifetimeCount ) : uint
publishingInterval double
keepAliveCount uint
lifetimeCount uint
return uint
        protected virtual uint CalculateLifetimeCount(double publishingInterval, uint keepAliveCount, uint lifetimeCount)
        {
            double lifetimeInterval = lifetimeCount*publishingInterval;
            
            // lifetime cannot be longer than the max subscription lifetime.
            if (lifetimeInterval > m_maxSubscriptionLifetime)
            {
                lifetimeCount = (uint)(m_maxSubscriptionLifetime/publishingInterval);

                if (lifetimeCount < UInt32.MaxValue)
                {
                    if (m_maxSubscriptionLifetime % publishingInterval != 0)
                    {
                        lifetimeCount++;
                    }
                }
            }

            // the lifetime must be greater than the keepalive.
            if (keepAliveCount < UInt32.MaxValue / 3)
            {
                if (keepAliveCount * 3 > lifetimeCount)
                {
                    lifetimeCount = keepAliveCount * 3;
                }

                lifetimeInterval = lifetimeCount * publishingInterval;            
            }
            else
            {
                lifetimeCount = UInt32.MaxValue;
                lifetimeInterval = Double.MaxValue;
            }

            // apply the minimum.
            if (m_minSubscriptionLifetime > publishingInterval && m_minSubscriptionLifetime > lifetimeInterval)
            {
                lifetimeCount = (uint)(m_minSubscriptionLifetime/publishingInterval);

                if (lifetimeCount < UInt32.MaxValue)
                {
                    if (m_minSubscriptionLifetime%publishingInterval != 0)
                    {
                        lifetimeCount++;
                    }
                }
            }
                        
            return lifetimeCount;
        }