Opc.Ua.Com.Client.ComDaClient.Da30WriteItemValues C# (CSharp) Method

Da30WriteItemValues() private method

Writes the values using the DA3 interfaces.
private Da30WriteItemValues ( List requests ) : void
requests List The requests.
return void
        private void Da30WriteItemValues(List<WriteRequest> requests)
        {
            int count = 0;
            string[] itemIDs = new string[requests.Count];
            OpcRcw.Da.OPCITEMVQT[] values = new OpcRcw.Da.OPCITEMVQT[requests.Count];
            WriteRequest[] writeRequests = new WriteRequest[requests.Count];

            for (int ii = 0; ii < requests.Count; ii++)
            {
                WriteRequest request = requests[ii];

                if (request == null)
                {
                    continue;
                }

                // convert to a DA compatible type.
                object convertedValue = null;
                request.Error = ComDaClientNodeManager.LocalToRemoteValue(request.Value.WrappedValue, out convertedValue);

                if (request.Error < 0)
                {
                    continue;
                }

                itemIDs[count] = request.ItemId;

                values[count].vDataValue = convertedValue;
                values[count].bQualitySpecified = 0;
                values[count].bTimeStampSpecified = 0;
                
                // check for quality.
                values[count].wQuality = ComUtils.GetQualityCode(request.Value.StatusCode);

                if (values[count].wQuality != Qualities.OPC_QUALITY_GOOD)
                {
                    values[count].bQualitySpecified = 1;
                }

                // check for server timestamp.
                if (request.Value.ServerTimestamp != DateTime.MinValue)
                {
                    values[count].ftTimeStamp = ComUtils.GetFILETIME(request.Value.ServerTimestamp);
                    values[count].bTimeStampSpecified = 1;
                }

                // ignore server timestamp if source timestamp is provided.
                if (request.Value.SourceTimestamp != DateTime.MinValue)
                {
                    values[count].ftTimeStamp = ComUtils.GetFILETIME(request.Value.SourceTimestamp);
                    values[count].bTimeStampSpecified = 1;
                }

                writeRequests[count] = request;
                count++;
            }

            IntPtr ppErrors = IntPtr.Zero;
            string methodName = "IOPCItemIO.WriteVQT";
            
            try
            {
                IOPCItemIO server = BeginComCall<IOPCItemIO>(methodName, true);
                
                server.WriteVQT(
                    count, 
                    itemIDs,
                    values, 
                    out ppErrors);
            }
            catch (Exception e)
            {
                ComUtils.TraceComError(e, methodName);
                return;
            }
            finally
            {
                EndComCall(methodName);
            }

            int[] errors = ComUtils.GetInt32s(ref ppErrors, count, true);
            
            for (int ii = 0; ii < count; ii++)
            {
                writeRequests[ii].Error = errors[ii];
            }
        }