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; }
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); }
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}"); } }
protected void LogDebug(string message) { Tms.PrintDebug($"{_name}: {message}"); }