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

SetActive() public method

Sets the active state for the items.
public SetActive ( int serverHandles, bool active ) : int[]
serverHandles int The server handles.
active bool if set to true the items are activated.
return int[]
        public int[] SetActive(int[] serverHandles, bool active)
        {
            TraceState("SetActive", serverHandles.Length, active);
            ThrowIfDisposed();

            lock (m_lock)
            {
                // get net monitoring mode.
                MonitoringMode monitoringMode = MonitoringMode.Disabled;

                if (m_active && active)
                {
                    monitoringMode = MonitoringMode.Reporting;
                }

                // validate the handles.
                int[] results = new int[serverHandles.Length];
                ComDaGroupItem[] items = new ComDaGroupItem[serverHandles.Length];
                List<MonitoredItem> monitoredItems = new List<MonitoredItem>();

                for (int ii = 0; ii < serverHandles.Length; ii++)
                {
                    ComDaGroupItem item = null;

                    if (!m_itemsByHandle.TryGetValue(serverHandles[ii], out item))
                    {
                        results[ii] = ResultIds.E_INVALIDHANDLE;
                        continue;
                    }

                    // nothing to do if already in the correct state.
                    if (item.MonitoredItem.Status.MonitoringMode == monitoringMode)
                    {
                        item.Active = active;
                        results[ii] = ResultIds.S_OK;
                        continue;
                    }

                    items[ii] = item;
                    monitoredItems.Add(item.MonitoredItem);
                }

                // update the subscription.
                try
                {
                    m_subscription.SetMonitoringMode(monitoringMode, monitoredItems);
                }
                catch (Exception e)
                {
                    SetFatalError(items, results, e, ResultIds.E_FAIL);
                }

                // update active state on success
                for (int ii = 0; ii < items.Length; ii++)
                {
                    if (items[ii] != null)
                    {
                        // clear the last sent value when deactivated.
                        // this prevents the change filter from suppressing
                        // updates if the item is reactivated and the value
                        // has not changed.
                        if (items[ii].Active && !active)
                        {
                            items[ii].LastSentValue = null;
                        }

                        items[ii].Active = active;
                    }
                }

                // return any errors.
                return results;
            }
        }

Same methods

ComDaGroup::SetActive ( bool active ) : void