コード例 #1
0
        private async Task Dispatch() // todo unit test
        {
            if (!await IsElixUpdated())
            {
                return;
            }

            var(newEvents, newElix) = await _api.GetCurrentEvents(_currentElix);

            if (newEvents == null)
            {
                return;
            }
            Tms.PrintDebug($"Обнаружены новые события: {newEvents.Count}. Начинается обработка");

            await Task.WhenAll(_workers.Select(h => h.FilterAndDoWork(newEvents)));

            _currentElix = newElix;
        }
コード例 #2
0
ファイル: Worker.cs プロジェクト: ntk-interface/Iface.Oik.Tm
        public async Task DoWork()
        {
            Tms.PrintDebug(_infr.TmUserInfo?.Name);
            Tms.PrintDebug(await _api.GetSystemTimeString());

            var ts = new TmStatus(20, 1, 1);
            var ti = new TmAnalog(20, 1, 1);

            await _api.UpdateTagPropertiesAndClassData(ts);

            await _api.UpdateStatus(ts);

            await _api.UpdateTagPropertiesAndClassData(ti);

            await _api.UpdateAnalog(ti);

            Tms.PrintDebug(ts);
            Tms.PrintDebug(ti);
        }
コード例 #3
0
        public async Task FilterAndDoWork(IReadOnlyCollection <TmEvent> tmEvents) // todo unit test
        {
            var suitableEvents = tmEvents.Where(ev => _filter.IsEventSuitable(ev))
                                 .ToList();

            if (suitableEvents.Count == 0)
            {
                Tms.PrintDebug($"Отсутствуют подходящие события для обработчика {_name}");
                return;
            }
            try
            {
                await DoWork(suitableEvents);

                Tms.PrintDebug($"Обработаны события для обработчика {_name}");
            }
            catch (Exception ex)
            {
                Tms.PrintError($"Ошибка при работе обработчика {_name}: {ex.Message}");
            }
        }
コード例 #4
0
 protected void LogDebug(string message)
 {
     Tms.PrintDebug($"{_name}: {message}");
 }