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

ClearItemDeadbands() public method

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

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

            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.EuType >= 0 && item.EuType != (int)OpcRcw.Da.OPCEUTYPE.OPC_ANALOG)
                    {
                        errors[ii] = ResultIds.E_DEADBANDNOTSUPPORTED;
                        continue;
                    }

                    if (item.Deadband == -1)
                    {
                        errors[ii] = ResultIds.E_DEADBANDNOTSET;
                        continue;
                    }

                    items[ii] = item;
                    item.Deadband = -1;
                    count++;
                }
            }

            if (count == 0)
            {
                return errors;
            }

            // need the EU Info if the deadband is specified.
            m_manager.UpdateItemEuInfo(this, items);
            
            lock (m_lock)
            {
                // need to check the EU type after updating the EU info.
                for (int ii = 0; ii < items.Length; ii++)
                {
                    ComDaGroupItem item = items[ii];

                    if (item != null && item.EuType != (int)OpcRcw.Da.OPCEUTYPE.OPC_ANALOG)
                    {
                        errors[ii] = ResultIds.E_DEADBANDNOTSUPPORTED;
                        items[ii] = null;
                        continue;
                    }
                }

                UpdateDeadbandFilters(items);

                // 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;
                }

                return errors;
            }
        }