/// <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)); }
/// <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); } }
/// <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 })); }
/// <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); }
/// <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); } }
/// <summary> /// Create service /// </summary> /// <param name="client"></param> public TwinAdapter(ITwinServiceApi client) { _client = client ?? throw new ArgumentNullException(nameof(client)); }
/// <summary> /// Create browser /// </summary> /// <param name="twinService"></param> public Browser(ITwinServiceApi twinService) { _twinService = twinService; }
/// <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)); }
/// <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)); }