Opc.Ua.Server.Subscription.Modify C# (CSharp) Method

Modify() public method

Updates the publishing parameters for the subscription.
public Modify ( OperationContext context, double publishingInterval, uint maxLifetimeCount, uint maxKeepAliveCount, uint maxNotificationsPerPublish, byte priority ) : void
context OperationContext
publishingInterval double
maxLifetimeCount uint
maxKeepAliveCount uint
maxNotificationsPerPublish uint
priority byte
return void
        public void Modify(
            OperationContext context,
            double           publishingInterval,
            uint             maxLifetimeCount,
            uint             maxKeepAliveCount,
            uint             maxNotificationsPerPublish,
            byte             priority)
        {
            lock (m_lock)
            {
                // check session.
                VerifySession(context);

                // clear lifetime counter.
                ResetLifetimeCount();

                m_maxLifetimeCount = maxLifetimeCount;

                // update publishing interval.
                if (publishingInterval != m_publishingInterval)
                {
                    m_publishingInterval = publishingInterval;
                    m_publishTimerExpiry = (HiResClock.UtcNow.Ticks/TimeSpan.TicksPerMillisecond) + (long)publishingInterval;
                    ResetKeepaliveCount();
                }
                
                // update keep alive count.
                if (maxKeepAliveCount != m_maxKeepAliveCount)
                {
                    m_maxKeepAliveCount = maxKeepAliveCount;
                }

                m_maxNotificationsPerPublish = maxNotificationsPerPublish;

                // update priority.
                m_priority = priority;

                // update diagnostics
                lock (m_diagnostics)
                {   
                    m_diagnostics.ModifyCount++;
                    m_diagnostics.PublishingInterval = m_publishingInterval;
                    m_diagnostics.MaxKeepAliveCount = m_maxKeepAliveCount;
                    m_diagnostics.MaxLifetimeCount = m_maxLifetimeCount;
                    m_diagnostics.Priority = m_priority;
                    m_diagnostics.MaxNotificationsPerPublish = m_maxNotificationsPerPublish;
                }
                
                // TraceState("MODIFIED");
            }
        }