public void OnMonitoredNodeChanged(ISystemContext context, NodeState node, NodeStateChangeMasks changes)
{
lock (NodeManager.Lock)
{
if (DataChangeMonitoredItems == null)
{
return;
}
for (int ii = 0; ii < DataChangeMonitoredItems.Count; ii++)
{
MonitoredItem monitoredItem = DataChangeMonitoredItems[ii];
if (monitoredItem.AttributeId == Attributes.Value && (changes & NodeStateChangeMasks.Value) != 0)
{
QueueValue(context, node, monitoredItem);
continue;
}
if (monitoredItem.AttributeId != Attributes.Value && (changes & NodeStateChangeMasks.NonValue) != 0)
{
QueueValue(context, node, monitoredItem);
continue;
}
}
}
}