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

SetDataTypes() public method

Sets the data types.
public SetDataTypes ( int serverHandles, short dataTypes ) : int[]
serverHandles int The server handles.
dataTypes short The data types.
return int[]
        public int[] SetDataTypes(int[] serverHandles, short[] dataTypes)
        {
            TraceState("SetDataTypes", serverHandles.Length);
            ThrowIfDisposed();

            lock (m_lock)
            {
                int[] results = new int[serverHandles.Length];
                ComDaGroupItem[] items = new ComDaGroupItem[serverHandles.Length];

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

                    // validate the datatype.
                    if (dataTypes[ii] != 0)
                    {
                        NodeId dataTypeId = ComUtils.GetDataTypeId(dataTypes[ii]);

                        if (NodeId.IsNull(dataTypeId))
                        {
                            results[ii] = ResultIds.E_BADTYPE;
                            continue;
                        }

                        bool reqTypeIsArray = (dataTypes[ii] & (short)VarEnum.VT_ARRAY) != 0;
                        bool actualTypeIsArray = (item.CanonicalDataType & (short)VarEnum.VT_ARRAY) != 0;

                        if (reqTypeIsArray != actualTypeIsArray)
                        {
                            results[ii] = ResultIds.E_BADTYPE;
                            continue;
                        }
                    }

                    item.RequestedDataType = dataTypes[ii];
                    results[ii] = ResultIds.S_OK;
                }

                return results;
            }
        }