private void SendDataToService() { try { if (!DatabaseWorker.GetInstance(connectionString, logger).isConnected) { DatabaseWorker.GetInstance(connectionString, logger).Connect(); } //string result = DatabaseWorker.GetInstance(connectionString, logger).GetXml(get_xml_Query); var result = DatabaseWorker.GetInstance(connectionString, logger).GetXml(get_xml_Query); //if (!string.IsNullOrEmpty(result)) if (result != null && result.Count != 0) { logger.LogInformation($"Got xml string. Result count = {result.Count}"); foreach (string s in result) { XmlSerializer serializer = new XmlSerializer(typeof(ier)); ier ier = new ier(); using (TextReader reader = new StringReader(s)) { ier = (ier)serializer.Deserialize(reader); // iers.Add((ier)serializer.Deserialize(reader)); } logger.LogInformation($"Xml deserialized successfully."); var res = emercitService.newIER(ier); logger.LogInformation($"Data sent to the service. Result = {res}"); } } else { logger.LogError($"Xml string is empty. Result = {result}"); } } catch (Exception ex) { logger.LogError($"Error with sending data to the service. {ex.Message} {ex.InnerException}"); } finally { isDataSending = false; } }
public void ProcessData(Archive archive) { Logger.LogInformation($"Получены данные от {archive.Controller}." + $"Данные {archive.Data.Count}, " + $"статусы {archive.States.Count}, " + $"оповещения: {archive.Notifications.Count}."); try { //create json string string json = JsonConvert.SerializeObject(archive); //write to database if (!DatabaseWorker.GetInstance(working.connectionString, working.logger).isConnected) { DatabaseWorker.GetInstance(working.connectionString, working.logger).Connect(); } var response = DatabaseWorker.GetInstance(working.connectionString, working.logger).WriteToDb(Working.write_sqlQuery, json); Logger.LogInformation($"Результат записи в бд = {response}"); } catch (Exception ex) { Logger.LogError($"Json parse error. {ex.Message}"); } }
public void Initialize() { var dataProcessor = new DataProcessor(logger, this); emercitService = new EmercitAdapterService(serviceUrl); int value = 0; if (int.TryParse(sendingDataTimeout, out value)) { sendingTimeout = value; } else { logger.LogError("Проблема при считывании таймаута отправки данных из конфига. Установлено значение 3600 секунд."); sendingTimeout = 3600; } int controllerValue = 0; if (int.TryParse(reconnectControllersTimeout, out controllerValue)) { reconnectTimeout = controllerValue; } else { logger.LogError("Проблема при считывании таймаута переподключения контроллеров. Установлено значение 3600 секунд."); reconnectTimeout = 3600; } int portValue = 0; if (int.TryParse(controllerPort, out portValue)) { port = portValue; } else { logger.LogError("Проблема при считывании порта контроллеров. Установлен порт 8081."); port = 8081; } int q = 0; if (int.TryParse(queue, out q)) { queueSize = q; } else { logger.LogError("Проблема при считывании количества контроллеров в очереди. Установлено значение 5."); queueSize = 5; } sendingDataTimer = new Timer(Callback, null, TimeSpan.FromSeconds(sendingTimeout), Timeout.InfiniteTimeSpan); //Cоздание загрузчика и хранилища обновлений. При добавлении/удалении файлов обновлений в указанную //директорию автоматически будет выполенено добавление или удаление данного обновления в хранилище. //Это позволяет выполнять добавление файла обновления не перезапуская сервис. //const string updatesPath = @"C:\"; FilesFirmwaresStore store = null; try { store = new FilesFirmwaresStore(new FirmwaresWatcher(logger, NotifyFilters.FileName, updatesPath), new FileLoader(), logger); logger.LogInformation($"Обновление загружено. Версии в store:"); foreach (var s in store.GetVersions) { logger.LogInformation(s.ToString()); } } catch (Exception ex) { logger.LogError($"Ошибка при обновлении. {ex.Message}. Путь из конфига: {updatesPath}"); } if (store == null) { logger.LogInformation($"По указанному пути обновления не найдены, проверка директории С:."); updatesPath = @"C:\"; store = new FilesFirmwaresStore(new FirmwaresWatcher(logger, NotifyFilters.FileName, updatesPath), new FileLoader(), logger); } //Создание экземпляра класса сервера (прослушивание всех интерфейсов и TCP порта 4090, размер очереди //подключения контроллеров равен 5 var exchangeServer = ExchangeServer.CreateInstance(dataProcessor, store, new IPEndPoint(IPAddress.Any, port), queueSize); logger.LogInformation("Добавление контроллеров в хранилище"); try { controllers = DatabaseWorker.GetInstance(connectionString, logger).ReadData(read_sqlQuery); foreach (var controller in controllers) { exchangeServer.KeyStore.AddOrUpdate(controller.Id, controller.Key, false); logger.LogInformation($"Контроллер {controller.Key} добавлен."); } logger.LogInformation("Запуск сервера"); } catch (Exception ex) { logger.LogError($"Проблема при добавлении контроллеров в Exchange Server. {ex.Message}"); } exchangeServer.Start(); Console.WriteLine("Нажмите клавишу Enter для выхода..."); Console.ReadLine(); logger.LogInformation("Останов сервера"); try { Dispose(); exchangeServer.Stop(); } catch (Exception ex) { logger.LogError($"Ошибка при остановке сервера. {ex.Message}. {ex.InnerException}"); } }