Esempio n. 1
0
        /// <inheritdoc/>
        public async Task <PublishedItemListResultModel> NodePublishListAsync(
            string endpointId, PublishedItemListRequestModel request)
        {
            if (string.IsNullOrEmpty(endpointId))
            {
                throw new ArgumentNullException(nameof(endpointId));
            }
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            List <PublishedItemModel> list = null;
            var result = await _jobs.NewOrUpdateJobAsync(GetDefaultId(endpointId), job => {
                var publishJob = AsJob(job);
                list           = publishJob.WriterGroup.DataSetWriters
                                 .Select(writer => writer.DataSet.DataSetSource)
                                 .SelectMany(source => source.PublishedVariables.PublishedData
                                             .Select(variable => new PublishedItemModel {
                    NodeId             = variable.PublishedVariableNodeId,
                    SamplingInterval   = variable.SamplingInterval,
                    PublishingInterval = source.SubscriptionSettings.PublishingInterval
                }))
                                 .ToList();
                return(Task.FromResult(false));
            });

            return(new PublishedItemListResultModel {
                Items = list
            });
        }
Esempio n. 2
0
        /// <inheritdoc/>
        public async Task <PublishedItemListResultModel> NodePublishListAsync(
            string endpoint, PublishedItemListRequestModel request)
        {
            var result = await _client.NodePublishListAsync(endpoint,
                                                            Map <PublishedItemListRequestApiModel>(request));

            return(Map <PublishedItemListResultModel>(result));
        }
        /// <inheritdoc/>
        public async Task <PublishedItemListResultModel> NodePublishListAsync(
            string endpoint, PublishedItemListRequestModel request)
        {
            var result = await _client.NodePublishListAsync(endpoint,
                                                            request.ToApiModel());

            return(result.ToServiceModel());
        }
Esempio n. 4
0
        /// <inheritdoc/>
        public async Task <PublishedItemListResultModel> NodePublishListAsync(
            string endpointId, PublishedItemListRequestModel request)
        {
            var result = await CallServiceOnTwin <PublishedItemListRequestModel, PublishedItemListResultModel>(
                "PublishList_V2", endpointId, request);

            return(result);
        }
 /// <summary>
 /// Create api model from service model
 /// </summary>
 /// <param name="model"></param>
 public PublishedItemListRequestApiModel(PublishedItemListRequestModel model)
 {
     if (model == null)
     {
         throw new ArgumentNullException(nameof(model));
     }
     ContinuationToken = model.ContinuationToken;
 }
        /// <inheritdoc/>
        public async Task <PublishedItemListResultModel> NodePublishListAsync(
            EndpointRegistrationModel registration, PublishedItemListRequestModel request)
        {
            var result = await CallServiceOnSupervisor <PublishedItemListRequestModel, PublishedItemListResultModel>(
                "PublishList_V2", registration, request);

            return(result);
        }
Esempio n. 7
0
        /// <inheritdoc/>
        public async Task <PublishedItemListResultModel> NodePublishListAsync(
            string endpointId, PublishedItemListRequestModel request)
        {
            if (string.IsNullOrEmpty(endpointId))
            {
                throw new ArgumentNullException(nameof(endpointId));
            }
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var(publisherId, endpoint) = await _publishers.FindPublisherEndpoint(endpointId);

            var input = new GetNodesRequestModel {
                EndpointId        = endpointId,
                EndpointUrl       = endpoint.Url,
                ContinuationToken = request.ContinuationToken == null ? (ulong?)null :
                                    BitConverter.ToUInt64(request.ContinuationToken.DecodeAsBase64(), 0)
            };

            var(errorInfo, result) = await CallMethodOnPublisherAsync(publisherId,
                                                                      "GetConfiguredNodesOnEndpoint", JsonConvertEx.SerializeObject(input));

            if (result == null)
            {
                return(new PublishedItemListResultModel {
                    ErrorInfo = errorInfo
                });
            }
            var response = JsonConvertEx.DeserializeObject <GetNodesResponseModel>(result);

            return(new PublishedItemListResultModel {
                ContinuationToken = response.ContinuationToken == null ? null :
                                    BitConverter.GetBytes(response.ContinuationToken.Value)
                                    .ToBase64String(),
                Items = response.OpcNodes?
                        .Select(s => new PublishedItemModel {
                    NodeId = s.Id,
                    DisplayName = s.DisplayName,
                    PublishingInterval = s.OpcPublishingInterval == null ? (TimeSpan?)null :
                                         TimeSpan.FromMilliseconds(s.OpcPublishingInterval.Value),
                    SamplingInterval = s.OpcSamplingInterval == null ? (TimeSpan?)null :
                                       TimeSpan.FromMilliseconds(s.OpcSamplingInterval.Value),
                }).ToList()
            });
        }
        /// <inheritdoc/>
        public async Task <PublishedItemListResultModel> NodePublishListAsync(
            EndpointModel endpoint, PublishedItemListRequestModel request)
        {
            if (endpoint == null)
            {
                throw new ArgumentNullException(nameof(endpoint));
            }
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            GetUserNamePassword(endpoint.User, out var user, out var password);
            if (_client == null)
            {
                await StartAsync();
            }
            var input = new GetNodesRequestModel {
                EndpointUrl       = endpoint.Url,
                ContinuationToken = request.ContinuationToken == null ? (ulong?)null :
                                    BitConverter.ToUInt64(request.ContinuationToken.DecodeAsBase64(), 0)
            };

            var(errorInfo, result) = await _client.CallMethodAsync(
                "GetConfiguredNodesOnEndpoint", JsonConvertEx.SerializeObject(input), null);

            if (result == null)
            {
                return(new PublishedItemListResultModel {
                    ErrorInfo = errorInfo
                });
            }
            var response = JsonConvertEx.DeserializeObject <GetNodesResponseModel>(result);

            return(new PublishedItemListResultModel {
                ContinuationToken = response.ContinuationToken == null ? null :
                                    BitConverter.GetBytes(response.ContinuationToken.Value)
                                    .ToBase64String(),
                Items = response.OpcNodes?
                        .Select(s => new PublishedItemModel {
                    NodeId = FromPublisherNodeId(s.Id),
                    PublishingInterval = s.OpcPublishingInterval,
                    SamplingInterval = s.OpcSamplingInterval
                }).ToList()
            });
        }
Esempio n. 9
0
        /// <summary>
        /// Tests whether publishing was started for node in publisher.
        /// </summary>
        /// <param name="endpointId"></param>
        /// <param name="nodeId"></param>
        /// <returns></returns>
        private async Task <bool> IsPublishingAsync(string endpointId, string nodeId)
        {
            var listRequest = new PublishedItemListRequestModel();

            while (true)
            {
                var published = await NodePublishListAsync(endpointId,
                                                           listRequest);

                if (published.Items.Any(e => e.NodeId == nodeId))
                {
                    return(true);
                }
                if (string.IsNullOrEmpty(published.ContinuationToken))
                {
                    break;
                }
                listRequest.ContinuationToken = published.ContinuationToken;
            }
            return(false);
        }
Esempio n. 10
0
 /// <inheritdoc/>
 public Task <PublishedItemListResultModel> NodePublishListAsync(
     string endpointId, PublishedItemListRequestModel request)
 {
     return(_publish.NodePublishListAsync(Endpoint, request));
 }
 /// <inheritdoc/>
 public Task <PublishedItemListResultModel> NodePublishListAsync(
     T endpoint, PublishedItemListRequestModel request)
 {
     return(Task.FromResult(new PublishedItemListResultModel()));
 }