The description of a monitored item to create.
コード例 #1
0
ファイル: MyServer.cs プロジェクト: yuriik83/UA-.NET
        /// <summary>
        /// Specifies one or more nodes to monitor for data changes or events. 
        /// </summary>
        public CreateMonitoredItemsResponseMessage CreateMonitoredItems(CreateMonitoredItemsMessage request)
        {
            try
            {
                lock (m_lock)
                {
                    // verify session.
                    VerifySession(request.RequestHeader, false);

                    // look up subscription.
                    Subscription subscription = null;

                    if (!m_subscriptions.TryGetValue(request.SubscriptionId, out subscription))
                    {
                        throw new StatusCodeException(StatusCodes.BadSubscriptionIdInvalid, "Could not find subscription");
                    }

                    // process each item.
                    ListOfMonitoredItemCreateResult results = new ListOfMonitoredItemCreateResult();
                    ListOfDiagnosticInfo diagnosticInfos = new ListOfDiagnosticInfo();

                    for (int ii = 0; ii < request.ItemsToCreate.Count; ii++)
                    {
                        MonitoredItemCreateResult result = new MonitoredItemCreateResult();
                        DiagnosticInfo diagnosticInfo = new DiagnosticInfo();

                        subscription.CreateMonitoredItem(
                            request.TimestampsToReturn,
                            request.ItemsToCreate[ii],
                            result,
                            diagnosticInfo);

                        results.Add(result);
                        diagnosticInfos.Add(diagnosticInfo);
                    }
                    
                    // return the response.
                    CreateMonitoredItemsResponseMessage response = new CreateMonitoredItemsResponseMessage();

                    response.ResponseHeader = CreateResponseHeader(request.RequestHeader);
                    response.Results = results;
                    response.DiagnosticInfos = diagnosticInfos;

                    return response;
                }
            }
            catch (Exception e)
            {
                throw CreateSoapFault(request.RequestHeader, e);
            }
        }