コード例 #1
0
 /// <summary>
 /// Create browser
 /// </summary>
 /// <param name="twinService"></param>
 /// <param name="logger"></param>
 /// <param name="serializer"></param>
 /// <param name="commonHelper"></param>
 public Browser(ITwinServiceApi twinService, IJsonSerializer serializer, ILogger logger, UICommon commonHelper)
 {
     _twinService  = twinService ?? throw new ArgumentNullException(nameof(twinService));
     _serializer   = serializer ?? throw new ArgumentNullException(nameof(serializer));
     _logger       = logger ?? throw new ArgumentNullException(nameof(logger));
     _commonHelper = commonHelper ?? throw new ArgumentNullException(nameof(commonHelper));
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: JMayrbaeurl/Industrial-IoT
        /// <summary>
        /// Browse all references
        /// </summary>
        private static async Task <BrowseResponseApiModel> NodeBrowseAsync(
            ITwinServiceApi service, string endpoint, BrowseRequestApiModel request)
        {
            while (true)
            {
                var result = await service.NodeBrowseFirstAsync(endpoint, request);

                while (result.ContinuationToken != null)
                {
                    try {
                        var next = await service.NodeBrowseNextAsync(endpoint,
                                                                     new BrowseNextRequestApiModel {
                            ContinuationToken  = result.ContinuationToken,
                            Header             = request.Header,
                            ReadVariableValues = request.ReadVariableValues,
                            TargetNodesOnly    = request.TargetNodesOnly
                        });

                        result.References.AddRange(next.References);
                        result.ContinuationToken = next.ContinuationToken;
                    }
                    catch (Exception) {
                        await Try.Async(() => service.NodeBrowseNextAsync(endpoint,
                                                                          new BrowseNextRequestApiModel {
                            ContinuationToken = result.ContinuationToken,
                            Abort             = true
                        }));

                        throw;
                    }
                }
                return(result);
            }
        }
コード例 #3
0
 /// <summary>
 /// Get list of published nodes
 /// </summary>
 /// <param name="service"></param>
 /// <param name="endpointId"></param>
 /// <param name="continuation"></param>
 /// <returns></returns>
 public static Task <PublishedItemListResponseApiModel> NodePublishListAsync(
     this ITwinServiceApi service, string endpointId, string continuation = null)
 {
     return(service.NodePublishListAsync(endpointId, new PublishedItemListRequestApiModel {
         ContinuationToken = continuation
     }));
 }
コード例 #4
0
        /// <summary>
        /// Get list of published nodes
        /// </summary>
        /// <param name="service"></param>
        /// <param name="endpointId"></param>
        /// <returns></returns>
        public static async Task <IEnumerable <PublishedItemApiModel> > NodePublishListAllAsync(
            this ITwinServiceApi service, string endpointId)
        {
            var nodes  = new List <PublishedItemApiModel>();
            var result = await service.NodePublishListAsync(endpointId);

            nodes.AddRange(result.Items);
            while (result.ContinuationToken != null)
            {
                result = await service.NodePublishListAsync(endpointId,
                                                            result.ContinuationToken);

                nodes.AddRange(result.Items);
            }
            return(nodes);
        }
コード例 #5
0
        /// <summary>
        /// Browse all references if max references is null and user
        /// wants all. If user has requested maximum to return uses
        /// <see cref="ITwinServiceApi.NodeBrowseFirstAsync"/>
        /// </summary>
        /// <param name="service"></param>
        /// <param name="endpoint"></param>
        /// <param name="request"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        public static async Task <BrowseResponseApiModel> NodeBrowseAsync(
            this ITwinServiceApi service, string endpoint, BrowseRequestApiModel request,
            CancellationToken ct = default)
        {
            if (request.MaxReferencesToReturn != null)
            {
                return(await service.NodeBrowseFirstAsync(endpoint, request, ct));
            }
            while (true)
            {
                // Limit size of batches to a reasonable default to avoid communication timeouts.
                request.MaxReferencesToReturn = 500;
                var result = await service.NodeBrowseFirstAsync(endpoint, request, ct);

                while (result.ContinuationToken != null)
                {
                    try {
                        var next = await service.NodeBrowseNextAsync(endpoint,
                                                                     new BrowseNextRequestApiModel {
                            ContinuationToken  = result.ContinuationToken,
                            Header             = request.Header,
                            ReadVariableValues = request.ReadVariableValues,
                            TargetNodesOnly    = request.TargetNodesOnly
                        }, ct);

                        result.References.AddRange(next.References);
                        result.ContinuationToken = next.ContinuationToken;
                    }
                    catch (Exception) {
                        await Try.Async(() => service.NodeBrowseNextAsync(endpoint,
                                                                          new BrowseNextRequestApiModel {
                            ContinuationToken = result.ContinuationToken,
                            Abort             = true
                        }));

                        throw;
                    }
                }
                return(result);
            }
        }
コード例 #6
0
 /// <summary>
 /// Create service
 /// </summary>
 /// <param name="client"></param>
 public TwinAdapter(ITwinServiceApi client)
 {
     _client = client ?? throw new ArgumentNullException(nameof(client));
 }
コード例 #7
0
 /// <summary>
 /// Create browser
 /// </summary>
 /// <param name="twinService"></param>
 public Browser(ITwinServiceApi twinService)
 {
     _twinService = twinService;
 }
コード例 #8
0
 /// <summary>
 /// Create service
 /// </summary>
 /// <param name="client"></param>
 /// <param name="logger"></param>
 public TwinAdapter(ITwinServiceApi client, ILogger logger)
 {
     _client = client ?? throw new ArgumentNullException(nameof(client));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
コード例 #9
0
 /// <summary>
 /// Create browser
 /// </summary>
 /// <param name="twinService"></param>
 /// <param name="logger"></param>
 public Browser(ITwinServiceApi twinService, ILogger logger)
 {
     _twinService = twinService ?? throw new ArgumentNullException(nameof(twinService));
     _logger      = logger ?? throw new ArgumentNullException(nameof(logger));
 }