Opc.Ua.Server.MasterNodeManager.DeleteMonitoredItemsForEvents C# (CSharp) Method

DeleteMonitoredItemsForEvents() private method

Delete monitored items for event subscriptions.
private DeleteMonitoredItemsForEvents ( OperationContext context, uint subscriptionId, IList monitoredItems, IList processedItems, IList errors ) : void
context OperationContext
subscriptionId uint
monitoredItems IList
processedItems IList
errors IList
return void
        private void DeleteMonitoredItemsForEvents(
            OperationContext      context,
            uint                  subscriptionId,
            IList<IMonitoredItem> monitoredItems, 
            IList<bool>           processedItems,
            IList<ServiceResult>  errors)
        {           
            for (int ii = 0; ii < monitoredItems.Count; ii++)
            {
                IEventMonitoredItem monitoredItem = monitoredItems[ii] as IEventMonitoredItem;

                // all event subscriptions are handled by the event manager.
                if (monitoredItem == null || (monitoredItem.MonitoredItemType & MonitoredItemTypeMask.Events) == 0)
                {
                    continue;
                }
                
                processedItems[ii] = true;

                // unsubscribe to all node managers.
                if ((monitoredItem.MonitoredItemType & MonitoredItemTypeMask.AllEvents) != 0)
                {
                    foreach (INodeManager manager in m_nodeManagers)
                    {
                        manager.SubscribeToAllEvents(context, subscriptionId, monitoredItem, true);
                    }
                }

                // only unsubscribe to the node manager that owns the node.
                else
                {
                    monitoredItem.NodeManager.SubscribeToEvents(context, monitoredItem.ManagerHandle, subscriptionId, monitoredItem, true);
                }

                // delete the item.
                m_server.EventManager.DeleteMonitoredItem(monitoredItem.Id);

                // success.
                errors[ii] = StatusCodes.Good;
            }
        }