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