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

CreateMonitoredItems() public method

Creates a set of monitored items.
public CreateMonitoredItems ( OperationContext context, uint subscriptionId, double publishingInterval, TimestampsToReturn timestampsToReturn, IList itemsToCreate, IList errors, IList filterResults, IList monitoredItems ) : void
context OperationContext
subscriptionId uint
publishingInterval double
timestampsToReturn TimestampsToReturn
itemsToCreate IList
errors IList
filterResults IList
monitoredItems IList
return void
        public virtual void CreateMonitoredItems(
            OperationContext                  context,
            uint                              subscriptionId,
            double                            publishingInterval,
            TimestampsToReturn                timestampsToReturn,
            IList<MonitoredItemCreateRequest> itemsToCreate,
            IList<ServiceResult>              errors,
            IList<MonitoringFilterResult>     filterResults,
            IList<IMonitoredItem>             monitoredItems)
        {
            if (context == null)        throw new ArgumentNullException("context");
            if (itemsToCreate == null)  throw new ArgumentNullException("itemsToCreate");
            if (errors == null)         throw new ArgumentNullException("errors");
            if (filterResults == null)   throw new ArgumentNullException("filterResults");
            if (monitoredItems == null) throw new ArgumentNullException("monitoredItems");
            if (publishingInterval < 0) throw new ArgumentOutOfRangeException("publishingInterval");

            if (timestampsToReturn < TimestampsToReturn.Source || timestampsToReturn > TimestampsToReturn.Neither)
            {
                throw new ServiceResultException(StatusCodes.BadTimestampsToReturnInvalid);
            }

            // add placeholder for each result.
            bool validItems = false;

            for (int ii = 0; ii < itemsToCreate.Count; ii++)
            {
                // validate request paramaters.
                errors[ii] = ValidateMonitoredItemCreateRequest(itemsToCreate[ii]);

                if (ServiceResult.IsBad(errors[ii]))
                {
                    itemsToCreate[ii].Processed = true;
                    continue;
                }

                // found at least one valid item.
                validItems = true;
                itemsToCreate[ii].Processed = false;
            }

            // call each node manager.
            if (validItems)
            {
                // create items for event filters.
                CreateMonitoredItemsForEvents(
                    context,
                    subscriptionId,
                    publishingInterval,
                    timestampsToReturn,
                    itemsToCreate,
                    errors,
                    filterResults,
                    monitoredItems,
                    ref m_lastMonitoredItemId);

                // create items for data access.
                foreach (INodeManager nodeManager in m_nodeManagers)
                {
                    nodeManager.CreateMonitoredItems(
                        context,
                        subscriptionId,
                        publishingInterval,
                        timestampsToReturn,
                        itemsToCreate,
                        errors,
                        filterResults,
                        monitoredItems,
                        ref m_lastMonitoredItemId);
                }

                // fill results for unknown nodes.
                for (int ii = 0; ii < errors.Count; ii++)
                {
                    if (!itemsToCreate[ii].Processed)
                    {
                        errors[ii] = new ServiceResult(StatusCodes.BadNodeIdUnknown);
                    }
                }
            }
        }