public virtual void DeleteMonitoredItems(
OperationContext context,
uint subscriptionId,
IList<IMonitoredItem> itemsToDelete,
IList<ServiceResult> errors)
{
if (context == null) throw new ArgumentNullException("context");
if (itemsToDelete == null) throw new ArgumentNullException("itemsToDelete");
if (errors == null) throw new ArgumentNullException("errors");
List<bool> processedItems = new List<bool>(itemsToDelete.Count);
for (int ii = 0; ii < itemsToDelete.Count; ii++)
{
processedItems.Add(ServiceResult.IsBad(errors[ii]) || itemsToDelete[ii] == null);
}
// delete items for event filters.
DeleteMonitoredItemsForEvents(
context,
subscriptionId,
itemsToDelete,
processedItems,
errors);
// call each node manager.
foreach (INodeManager nodeManager in m_nodeManagers)
{
nodeManager.DeleteMonitoredItems(
context,
itemsToDelete,
processedItems,
errors);
}
// fill results for unknown nodes.
for (int ii = 0; ii < errors.Count; ii++)
{
if (!processedItems[ii])
{
errors[ii] = StatusCodes.BadMonitoredItemIdInvalid;
}
}
}