Opc.Ua.Com.Server.ComDaGroupManager.ValidateItems C# (CSharp) Method

ValidateItems() public method

Validates the items.
public ValidateItems ( ComDaGroup group, ComDaCreateItemRequest requests ) : Opc.Ua.Com.Server.ComDaGroupItem[]
group ComDaGroup The group.
requests ComDaCreateItemRequest The requests.
return Opc.Ua.Com.Server.ComDaGroupItem[]
        public ComDaGroupItem[] ValidateItems(ComDaGroup group, ComDaCreateItemRequest[] requests)
        {
            TraceState("ValidateItems", group.Name);

            // get the session to use for the operation.
            Session session = m_session;

            if (session == null)
            {
                throw ComUtils.CreateComException(ResultIds.E_FAIL);
            }

            // validate items.
            ComDaGroupItem[] items = new ComDaGroupItem[requests.Length];

            for (int ii = 0; ii < requests.Length; ii += 10000)
            {
                ValidateItems(session, group, requests, items, ii, 10000);
            }

            // process results.
            for (int ii = 0; ii < requests.Length; ii++)
            {
                // check for the results.
                ComDaCreateItemRequest request = requests[ii];

                if (request.Error < 0)
                {
                    items[ii] = null;
                    continue;
                }

                // check access path.
                if (!String.IsNullOrEmpty(request.AccessPath))
                {
                    items[ii] = null;
                    request.Error = ResultIds.E_UNKNOWNPATH;
                    continue;
                }

                ComDaGroupItem item = items[ii];

                // validate the datatype.
                if (request.RequestedDataType != 0)
                {
                    NodeId dataTypeId = ComUtils.GetDataTypeId(request.RequestedDataType);

                    if (NodeId.IsNull(dataTypeId))
                    {
                        items[ii] = null;
                        request.Error = ResultIds.E_BADTYPE;
                        continue;
                    }

                    bool reqTypeIsArray = (request.RequestedDataType & (short)VarEnum.VT_ARRAY) != 0;
                    bool actualTypeIsArray = (item.CanonicalDataType & (short)VarEnum.VT_ARRAY) != 0;

                    if (reqTypeIsArray != actualTypeIsArray)
                    {
                        items[ii] = null;
                        request.Error = ResultIds.E_BADTYPE;
                        continue;
                    }
                }

                // create a new monitored item.
                MonitoredItem monitoredItem = new MonitoredItem();

                monitoredItem.StartNodeId = item.NodeId;
                monitoredItem.RelativePath = null;
                monitoredItem.AttributeId = Attributes.Value;
                monitoredItem.MonitoringMode = (request.Active)?MonitoringMode.Reporting:MonitoringMode.Disabled;
                monitoredItem.SamplingInterval = group.UpdateRate/2;
                monitoredItem.QueueSize = 0;
                monitoredItem.DiscardOldest = true;
                monitoredItem.Filter = null;

                // update item.
                item.ServerHandle = (int)monitoredItem.ClientHandle;
                item.MonitoredItem = monitoredItem;

                // link the monitored item back to the group item.
                monitoredItem.Handle = item;
                
                // update return parameters.
                request.ServerHandle = item.ServerHandle;
                request.CanonicalDataType = item.CanonicalDataType;
                request.AccessRights = item.AccessRights;
                request.Error = ResultIds.S_OK;
            }

            return items;
        }

Same methods

ComDaGroupManager::ValidateItems ( Session session, ComDaGroup group, ComDaCreateItemRequest requests, Opc.Ua.Com.Server.ComDaGroupItem items, int start, int count ) : void