public virtual void DeleteMonitoredItems(
OperationContext context,
IList<IMonitoredItem> monitoredItems,
IList<bool> processedItems,
IList<ServiceResult> errors)
{
ServerSystemContext systemContext = m_systemContext.Copy(context);
List<IMonitoredItem> deletedItems = new List<IMonitoredItem>();
lock (Lock)
{
for (int ii = 0; ii < monitoredItems.Count; ii++)
{
// skip items that have already been processed.
if (processedItems[ii] || monitoredItems[ii] == null)
{
continue;
}
// check handle.
NodeHandle handle = IsHandleInNamespace(monitoredItems[ii].ManagerHandle);
if (handle == null)
{
continue;
}
// owned by this node manager.
processedItems[ii] = true;
errors[ii] = DeleteMonitoredItem(
systemContext,
monitoredItems[ii],
handle);
// save the modified item.
if (ServiceResult.IsGood(errors[ii]))
{
deletedItems.Add(monitoredItems[ii]);
RemoveNodeFromComponentCache(systemContext, handle);
}
}
}
// do any post processing.
OnDeleteMonitoredItemsComplete(systemContext, deletedItems);
}