예제 #1
0
        /// <summary>
        /// Publish a node
        /// </summary>
        /// <param name="endpointId"></param>
        /// <param name="node"></param>
        private async Task PublishNodeAsync(string endpointId, ListNode node)
        {
            node.Publishing = true;
            var item = node.PublishedItem;
            var publishingInterval = IsTimeIntervalSet(item?.PublishingInterval) ? item.PublishingInterval : TimeSpan.FromMilliseconds(1000);
            var samplingInterval   = IsTimeIntervalSet(item?.SamplingInterval) ? item.SamplingInterval : TimeSpan.FromMilliseconds(1000);
            var heartbeatInterval  = IsTimeIntervalSet(item?.HeartbeatInterval) ? item.HeartbeatInterval : null;
            var result             = await Publisher.StartPublishingAsync(endpointId, node.Id, node.NodeName, samplingInterval, publishingInterval, heartbeatInterval, Credential);

            if (result)
            {
                node.PublishedItem = new PublishedItemApiModel()
                {
                    NodeId             = node.Id,
                    PublishingInterval = publishingInterval,
                    SamplingInterval   = samplingInterval,
                    HeartbeatInterval  = heartbeatInterval
                };
                if (PublishEvent == null)
                {
                    PublishEvent = Task.Run(async() => await PublisherServiceEvents.NodePublishSubscribeByEndpointAsync(EndpointId,
                                                                                                                        samples => InvokeAsync(() => GetPublishedNodeData(samples)))).Result;
                }
            }
            else
            {
                node.Publishing = false;
            }
        }
        /// <summary>
        /// OnAfterRenderAsync
        /// </summary>
        /// <param name="firstRender"></param>
        protected override async Task OnAfterRenderAsync(bool firstRender)
        {
            if (firstRender)
            {
                NodeList = await PublisherHelper.PublishedAsync(EndpointId, true);

                Page                 = "1";
                PagedNodeList        = NodeList.GetPaged(int.Parse(Page), CommonHelper.PageLength, NodeList.Error);
                CommonHelper.Spinner = string.Empty;
                CommonHelper.CheckErrorOrEmpty(PagedNodeList, ref _tableView, ref _tableEmpty);
                StateHasChanged();
                PublishEvent = await PublisherServiceEvents.NodePublishSubscribeByEndpointAsync(EndpointId,
                                                                                                samples => InvokeAsync(() => GetPublishedNodeData(samples)));
            }
        }
예제 #3
0
        /// <summary>
        /// OnAfterRenderAsync
        /// </summary>
        /// <param name="firstRender"></param>
        protected override async Task OnAfterRenderAsync(bool firstRender)
        {
            if (firstRender)
            {
                EndpointModel = await registryService.GetEndpointAsync(EndpointId);

                Credential = await GetSecureItemAsync <CredentialModel>(CommonHelper.CredentialKey);
                await BrowseTreeAsync(BrowseDirection.Forward, 0, true, FirstPage, string.Empty, new List <string>());

                CommonHelper.Spinner = string.Empty;
                CommonHelper.CheckErrorOrEmpty(PagedNodeList, ref _tableView, ref _tableEmpty);
                StateHasChanged();
                if (PublishedNodes.Results.Count > 0)
                {
                    PublishEvent = await PublisherServiceEvents.NodePublishSubscribeByEndpointAsync(EndpointId,
                                                                                                    samples => InvokeAsync(() => GetPublishedNodeData(samples)));
                }
            }
        }
예제 #4
0
 protected override async Task SubscribeEvents()
 {
     _events = await PublisherServiceEvents.NodePublishSubscribeByEndpointAsync(EndpointId,
                                                                                samples => InvokeAsync(() => GetPublishedNodeData(samples)));
 }