Opc.Ua.Com.Server.ComAe2Subscription.ModifySubscription C# (CSharp) Method

ModifySubscription() private method

Modifies a subscription.
private ModifySubscription ( ) : void
return void
        private void ModifySubscription()
        {
            // turn off publishing first.
            if (!Active && m_subscription.CurrentPublishingEnabled)
            {
                m_subscription.SetPublishingMode(false);
            }

            m_subscription.PublishingInterval = (int)Math.Max(BufferTime, 1000);
            m_subscription.KeepAliveCount = (uint)Math.Max(Math.Ceiling(((double)KeepAlive)/m_subscription.PublishingInterval), 10);
            m_subscription.LifetimeCount = m_subscription.KeepAliveCount * 3;
            m_subscription.MaxNotificationsPerPublish = MaxSize;
            m_subscription.TimestampsToReturn = TimestampsToReturn.Neither;
            m_subscription.Priority = 0;
            m_subscription.Modify();

            // update the monitored items.
            EventFilter filter = m_filter.GetFilter();
            MonitoringMode monitoringMode = (Active)?MonitoringMode.Reporting:MonitoringMode.Disabled;

            List<MonitoredItem> itemsToUpdate = new List<MonitoredItem>();

            foreach (MonitoredItem monitoredItem in m_notifiers.Values)
            {
                monitoredItem.Filter = filter;

                if (!monitoredItem.Created)
                {
                    monitoredItem.MonitoringMode = monitoringMode;
                    m_subscription.AddItem(monitoredItem);
                }
                else
                {
                    if (monitoredItem.MonitoringMode != monitoringMode)
                    {
                        itemsToUpdate.Add(monitoredItem);
                    }
                }
            }

            m_subscription.ApplyChanges();
            m_subscription.SetMonitoringMode(monitoringMode, itemsToUpdate);

            // turn on publishing last.
            if (Active && !m_subscription.CurrentPublishingEnabled)
            {
                m_subscription.SetPublishingMode(true);
            }
        }