private bool DeleteMonitoredItems(
Subscription subscription,
List<MonitoredItem> monitoredItems)
{
try
{
RequestHeader requestHeader = new RequestHeader();
requestHeader.ReturnDiagnostics = 0;
UInt32Collection monitoredItemIds = new UInt32Collection();
for (int ii = 0; ii < monitoredItems.Count; ii++)
{
monitoredItemIds.Add(monitoredItems[ii].MonitoredItemId);
}
StatusCodeCollection results;
DiagnosticInfoCollection diagnosticInfos;
Session.DeleteMonitoredItems(
requestHeader,
subscription.SubscriptionId,
monitoredItemIds,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, monitoredItemIds);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, monitoredItemIds);
if (diagnosticInfos != null && diagnosticInfos.Count > 0)
{
Log("Returned non-empty DiagnosticInfos array during DeleteMonitoredItems.");
return false;
}
bool success = true;
for (int ii = 0; ii < monitoredItems.Count; ii++)
{
if (StatusCode.IsBad(results[ii]))
{
Log(
"Delete monitored item failed for Node '{0}', NodeId = {1}, AttributeId = {2}, StatusCode = {3}",
monitoredItems[ii].Node,
monitoredItems[ii].Node.NodeId,
Attributes.GetBrowseName(monitoredItems[ii].AttributeId),
results[ii]);
success = false;
continue;
}
}
return success;
}
catch (Exception e)
{
Log(e, "DeleteMonitoredItems Failed.");
return false;
}
}