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

CalculateKeepAliveCount() protected method

Calculates the keep alive count.
protected CalculateKeepAliveCount ( double publishingInterval, uint keepAliveCount ) : uint
publishingInterval double
keepAliveCount uint
return uint
        protected virtual uint CalculateKeepAliveCount(double publishingInterval, uint keepAliveCount)
        {
            // set default.
            if (keepAliveCount == 0)
            {
                keepAliveCount = 3;
            }

            double keepAliveInterval = keepAliveCount*publishingInterval;

            // keep alive interval cannot be longer than the max subscription lifetime.
            if (keepAliveInterval > m_maxSubscriptionLifetime)
            {
                keepAliveCount = (uint)(m_maxSubscriptionLifetime/publishingInterval);

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

                keepAliveInterval = keepAliveCount*publishingInterval;            
            }

            // the time between publishes cannot exceed the max publishing interval.
            if (keepAliveInterval > m_maxPublishingInterval)
            {
                keepAliveCount = (uint)(m_maxPublishingInterval/publishingInterval);

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