Opc.Ua.ServerTest.SubscribeTest.ToogleDisabledState C# (CSharp) Method

ToogleDisabledState() private method

Toggles the monitoring mode for the items.
private ToogleDisabledState ( Subscription subscription, List monitoredItems ) : bool
subscription Subscription
monitoredItems List
return bool
        private bool ToogleDisabledState(Subscription subscription, List<MonitoredItem> monitoredItems)
        {
            UInt32Collection monitoredItemIds = new UInt32Collection();

            lock (subscription)
            {
                subscription.NotificationMessages.Clear();
                subscription.ReceiveTimes.Clear();

                for (int ii = 0; ii < monitoredItems.Count; ii++)
                {
                    monitoredItemIds.Add(monitoredItems[ii].MonitoredItemId);
                    monitoredItems[ii].Value = null;
                }
            }

            StatusCodeCollection results = null;
            DiagnosticInfoCollection diagnosticInfos = null;

            Session.SetMonitoringMode(
                null,
                subscription.SubscriptionId,
                MonitoringMode.Disabled,
                monitoredItemIds,
                out results,
                out diagnosticInfos);

            ClientBase.ValidateResponse(results, monitoredItemIds);
            ClientBase.ValidateDiagnosticInfos(diagnosticInfos, monitoredItemIds);
            
            lock (subscription)
            {
                for (int ii = 0; ii < results.Count; ii++)
                {
                    if (StatusCode.IsBad(results[ii]))
                    {
                        Log(
                            "Error disabling MonitoredItem. ClientHandle = {0}, Node = {1}, Attribute = {2}, StatusCode = {3}", 
                            monitoredItems[ii].MonitoredItemId,
                            monitoredItems[ii].Node,
                            Attributes.GetBrowseName(monitoredItems[ii].AttributeId),
                            results[ii]);

                        return false;
                    }
                }
            }

            ResponseHeader responseHeader = Session.SetMonitoringMode(
                null,
                subscription.SubscriptionId,
                MonitoringMode.Reporting,
                monitoredItemIds,
                out results,
                out diagnosticInfos);

            ClientBase.ValidateResponse(results, monitoredItemIds);
            ClientBase.ValidateDiagnosticInfos(diagnosticInfos, monitoredItemIds);
            
            lock (subscription)
            {
                for (int ii = 0; ii < results.Count; ii++)
                {
                    if (StatusCode.IsBad(results[ii]))
                    {
                        Log(
                            "Error enabling MonitoredItem. ClientHandle = {0}, Node = {1}, Attribute = {2}, StatusCode = {3}", 
                            monitoredItems[ii].MonitoredItemId,
                            monitoredItems[ii].Node,
                            Attributes.GetBrowseName(monitoredItems[ii].AttributeId),
                            results[ii]);

                        return false;
                    }

                    monitoredItems[ii].UpdateTime = responseHeader.Timestamp;
                }
            }

            return true;
        }