Пример #1
0
        private void EventsSubscribeThread()
        {
            var connectionParameters = _connectionParametersModel.ConnectionParameter;

            var eventIdForfilter = _selectedEventforFilter != null && _selectedEventforFilter.Id != Guid.Empty ?
                                   _selectedEventforFilter.Id.ToString() :
                                   string.Empty;

            if (eventIdForfilter != string.Empty)
            {
                eventIdForfilter = string.Concat("&filter=", eventIdForfilter);
            }

            var channeldId         = _channelsViewModel.SelectedChannelId;
            var channelIdForFilter = string.Empty;

            if (channeldId != Guid.Empty)
            {
                channelIdForFilter = string.Concat("&channelid=", channeldId);
            }

            var url = String.Format(EventsUrl,
                                    connectionParameters.ServerIp,
                                    connectionParameters.Port,
                                    connectionParameters.Login,
                                    Md5Helper.Md5Hash(connectionParameters.Password),
                                    eventIdForfilter,
                                    channelIdForFilter);

            _urlViewer.Url = url;

            using (var streamToRead = _webRequestFactory.CreateInifinityWebRequest(url))
            {
                if (streamToRead == null)
                {
                    return;
                }

                var stringBuilder = new List <string>();
                using (var sr = new StreamReader(streamToRead))
                {
                    while (_isStarted)
                    {
                        try
                        {
                            string line = sr.ReadLine();
                            if (string.IsNullOrEmpty(line))
                            {
                                stringBuilder.Clear();
                                continue;
                            }

                            stringBuilder.Add(line);

                            if (line == "}")
                            {
                                var subscribedEvent = JsonEventParser.ParseEventFromJsonPaylaod(stringBuilder);

                                OnIncomingNewEvent(subscribedEvent);

                                Thread.Sleep(1000);
                            }
                            //Thread.Sleep(1000);
                        }
                        catch (Exception)
                        {
                            Thread.Sleep(1000);
                        }
                    }
                }
            }
        }