Opc.Ua.Com.Server.ComDaGroup.RecreateItems C# (CSharp) Method

RecreateItems() public method

Recreates the items.
public RecreateItems ( ) : void
return void
        public void RecreateItems()
        {
            TraceState("RecreateItems", this.m_name);
            ThrowIfDisposed();

            // create the items on the server.
            lock (m_lock)
            {
                // add the items to the subscription.
                for (int ii = 0; ii < m_items.Count; ii++)
                {
                    ComDaGroupItem item = m_items[ii];

                    // check if the item has a different subscription.
                    if (!Object.ReferenceEquals(item.MonitoredItem.Subscription, m_subscription))
                    {
                        // clone the item if it was attached to discarded subscription.
                        if (item.MonitoredItem.Subscription != null)
                        {
                            m_itemsByMonitoredItem.Remove(item.MonitoredItem.ClientHandle);

                            item.MonitoredItem = new MonitoredItem(item.MonitoredItem);
                        }
                        AddItemToSubscription(item);
                    }
                }

                // update the server.
                try
                {
                    m_subscription.ApplyChanges();
                }
                catch (Exception)
                {
                    // TBD
                }
            }
        }

Usage Example

Ejemplo n.º 1
0
        /// <summary>
        /// Recovers the session context.
        /// </summary>
        /// <param name="group">The group.</param>
        public void RecoverSessionContext(ComDaGroup group)
        {
            // create a new subscription and copy existing one.
            Subscription discardSubscription = group.Subscription;
            Subscription subscription = new Subscription();
            subscription.DisplayName = discardSubscription.DisplayName;
            subscription.PublishingInterval = discardSubscription.PublishingInterval;
            subscription.KeepAliveCount = discardSubscription.KeepAliveCount;
            subscription.LifetimeCount = discardSubscription.LifetimeCount;
            subscription.MaxNotificationsPerPublish = discardSubscription.MaxNotificationsPerPublish;
            subscription.Priority = discardSubscription.Priority;
            subscription.PublishingEnabled = discardSubscription.PublishingEnabled;
            subscription.DisableMonitoredItemCache = discardSubscription.DisableMonitoredItemCache;

            try
            {
                discardSubscription.Dispose();
            }
            catch (Exception)
            {
            }

            m_session.AddSubscription(subscription);
            
            try
            {
                // create the initial subscription.
                subscription.Create();

                // set the keep alive interval to 30 seconds and the the lifetime interval to 5 minutes.
                subscription.KeepAliveCount = (uint)((30000 / (int)subscription.CurrentPublishingInterval) + 1);
                subscription.LifetimeCount = (uint)((600000 / (int)subscription.CurrentPublishingInterval) + 1);

                // update the subscription.
                subscription.Modify();
            }
            catch (Exception e)
            {
                m_session.RemoveSubscription(subscription);
                throw ComUtils.CreateComException(e, ResultIds.E_FAIL);
            }

            // update the group.
            group.ActualUpdateRate = (int)(subscription.CurrentPublishingInterval * 2);
            group.Subscription = subscription;
            group.RecreateItems();
        }