Opc.Ua.Sample.CustomNodeManager2.ConditionRefresh C# (CSharp) Method

ConditionRefresh() public method

Tells the node manager to refresh any conditions associated with the specified monitored items.
This method is called when the condition refresh method is called for a subscription. The node manager must create a refresh event for each condition monitored by the subscription.
public ConditionRefresh ( OperationContext context, IList monitoredItems ) : ServiceResult
context Opc.Ua.Server.OperationContext
monitoredItems IList
return ServiceResult
        public virtual ServiceResult ConditionRefresh(
            OperationContext           context, 
            IList<IEventMonitoredItem> monitoredItems)
        {
            ServerSystemContext systemContext = m_systemContext.Copy(context);

            lock (Lock)
            {
                for (int ii = 0; ii < monitoredItems.Count; ii++)
                {
                    IEventMonitoredItem monitoredItem = monitoredItems[ii];

                    if (monitoredItem == null)
                    {
                        continue;
                    }
                    
                    // check for global subscription.
                    if (monitoredItem.MonitoringAllEvents)
                    {
                        for (int jj = 0; jj < m_rootNotifiers.Count; jj++)
                        {
                            MonitoredNode monitoredNode = m_rootNotifiers[jj].Handle as MonitoredNode;

                            if (monitoredNode == null)
                            {
                                continue;
                            }

                            monitoredNode.ConditionRefresh(systemContext, monitoredItem);
                        }
                    }

                    // check for subscription to local node.
                    else
                    {
                        NodeState source = IsHandleInNamespace(monitoredItem.ManagerHandle );

                        if (source == null)
                        {
                            continue;
                        }
                        
                        MonitoredNode monitoredNode = source.Handle as MonitoredNode;
                        
                        if (monitoredNode == null)
                        {
                            continue;
                        }
                                
                        monitoredNode.ConditionRefresh(systemContext, monitoredItem);
                    }
                }
            }

            return ServiceResult.Good;
        }