Opc.Ua.Com.Client.ComDaGroup.OnDataChange C# (CSharp) Method

OnDataChange() private method

Called when a data change event arrives.
private OnDataChange ( int clientHandles, DaValue values ) : void
clientHandles int The client handles.
values DaValue The values.
return void
        internal void OnDataChange(int[] clientHandles, DaValue[] values)
        {
            // check if callbacks are enabled.
            if (m_monitoredItems == null)
            {
                return;
            }

            // lookup client handle a report change directly to monitored item.
            lock (m_monitoredItems)
            {
                for (int ii = 0; ii < clientHandles.Length; ii++)
                {
                    DataChangeInfo info = null;

                    if (!m_monitoredItems.TryGetValue(clientHandles[ii], out info))
                    {
                        continue;
                    }

                    MonitoredItem[] monitoredItems = info.MonitoredItems;

                    // convert the value to a UA value.
                    info.LastValue = new DataValue();
                    info.LastError = ReadRequest.GetItemValue(values[ii], info.LastValue, DiagnosticsMasks.All);
                    info.LastValue.ServerTimestamp = DateTime.UtcNow;

                    // queue the values.
                    for (int jj = 0; jj < monitoredItems.Length; jj++)
                    {

                        if (info.LastValue.Value.GetType().IsArray
                            && monitoredItems[jj].IndexRange.Count != info.LastValue.Value.GetType().GetArrayRank()
                            && StatusCode.IsBad(info.LastValue.StatusCode))
                        {
                            info.LastValue.StatusCode = StatusCodes.BadIndexRangeNoData;
                        }

                        monitoredItems[jj].QueueValue(info.LastValue, info.LastError);
                    }
                }
            }
        }