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

ClearItemSamplingRates() public method

Clears the sampling rates for the items.
public ClearItemSamplingRates ( int serverHandles ) : int[]
serverHandles int The server handles.
return int[]
        public int[] ClearItemSamplingRates(int[] serverHandles)
        {
            TraceState("ClearItemSamplingRates", serverHandles.Length);
            ThrowIfDisposed();

            int[] errors = new int[serverHandles.Length];
            ComDaGroupItem[] items = new ComDaGroupItem[serverHandles.Length];

            lock (m_lock)
            {
                // update the filter for analog items that have not overriden the deadband.
                for (int ii = 0; ii < serverHandles.Length; ii++)
                {
                    ComDaGroupItem item = null;

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

                    if (item.SamplingRate == -1)
                    {
                        errors[ii] = ResultIds.E_RATENOTSET;
                        continue;
                    }
                    
                    item.MonitoredItem.SamplingInterval = (int)(this.UpdateRate/2);
                    items[ii] = item;
                }

                // update the items on the server.
                try
                {
                    m_subscription.ApplyChanges();
                }
                catch (Exception e)
                {
                    int error = ComUtils.GetErrorCode(e, ResultIds.E_FAIL);

                    for (int ii = 0; ii < items.Length; ii++)
                    {
                        if (items[ii] != null)
                        {
                            errors[ii] = error;
                        }
                    }

                    return errors;
                }

                // check results for monitored items.
                for (int ii = 0; ii < items.Length; ii++)
                {
                    ComDaGroupItem item = items[ii];

                    if (item == null)
                    {
                        continue;
                    }

                    if (ServiceResult.IsBad(item.MonitoredItem.Status.Error))
                    {
                        errors[ii] = ResultIds.E_FAIL;
                        continue;
                    }

                    item.SamplingRate = -1;
                    item.ActualSamplingRate = 0;
                    item.NextUpdateTime = -1;
                }

                return errors;
            }
        }