예제 #1
0
        /// <summary>
        /// Выполнить действия при запуске работы сервера
        /// </summary>
        public override void OnServerStart()
        {
            // вывод в журнал
            log = new Log(Log.Formats.Simple);
            log.Encoding = Encoding.UTF8;
            log.FileName = AppDirs.LogDir + LogFileName;
            log.WriteBreak();
            log.WriteAction(string.Format(ModPhrases.StartModule, Name));

            // определение полного имени файла информации
            infoFileName = AppDirs.LogDir + InfoFileName;

            // загрука конфигурации
            config = new Config(AppDirs.ConfigDir);
            string errMsg;

            if (config.Load(out errMsg))
            {
                // создание и запуск экспортёров
                exporters = new List<Exporter>();
                foreach (Config.ExportDestination expDest in config.ExportDestinations)
                {
                    Exporter exporter = new Exporter(expDest, log);
                    exporters.Add(exporter);
                    exporter.Start();
                }

                // создание и запуск потока для обновления файла информации
                infoThread = new Thread(() => { while (true) { WriteInfo(); Thread.Sleep(InfoThreadDelay); } });
                infoThread.Start();
            }
            else
            {
                normalWork = false;
                workState = Localization.UseRussian ? "ошибка" : "error";
                WriteInfo();
                log.WriteAction(errMsg);
                log.WriteAction(ModPhrases.NormalModExecImpossible);
            }
        }
예제 #2
0
        /// <summary>
        /// Экспортировать архивные данные, загрузив их из файла
        /// </summary>
        private void ExportArcDataFromFile(Exporter exporter, DateTime dateTime)
        {
            // загрузка таблицы минутных срезов из файла
            SrezTableLight srezTable = new SrezTableLight();
            SrezAdapter srezAdapter = new SrezAdapter();
            srezAdapter.FileName = ServerUtils.BuildMinFileName(Settings.ArcDir, dateTime);

            try
            {
                srezAdapter.Fill(srezTable);
            }
            catch (Exception ex)
            {
                log.WriteAction(string.Format(Localization.UseRussian ?
                    "Ошибка при загрузке таблицы минутных срезов из файла {0}: {1}" :
                    "Error loading minute data table from file {0}: {1}", srezAdapter.FileName, ex.Message));
            }

            // поиск среза на заданное время
            SrezTableLight.Srez srez = srezTable.GetSrez(dateTime);

            // добавление среза в очередь экспорта
            if (srez == null)
            {
                log.WriteAction(Localization.UseRussian ? "Отсутствуют архивные данные для экспорта" :
                    "No archive data to export");
            }
            else
            {
                exporter.EnqueueArcData(srez);
                log.WriteAction(Localization.UseRussian ? "Архивные данные добавлены в очередь экспорта" :
                    "Archive data added to export queue");
            }
        }
예제 #3
0
        /// <summary>
        /// Экспортировать события, загрузив их из файла
        /// </summary>
        private void ExportEventsFromFile(Exporter exporter, DateTime date)
        {
            // загрузка таблицы событий из файла
            EventTableLight eventTable = new EventTableLight();
            EventAdapter eventAdapter = new EventAdapter();
            eventAdapter.FileName = ServerUtils.BuildEvFileName(Settings.ArcDir, date);

            try
            {
                eventAdapter.Fill(eventTable);
            }
            catch (Exception ex)
            {
                log.WriteAction(string.Format(Localization.UseRussian ?
                    "Ошибка при загрузке таблицы событий из файла {0}: {1}" :
                    "Error loading event table from file {0}: {1}", eventAdapter.FileName, ex.Message));
            }

            // добавление событий в очередь экспорта
            if (eventTable.AllEvents.Count > 0)
            {
                foreach (EventTableLight.Event ev in eventTable.AllEvents)
                    exporter.EnqueueEvent(ev);
                log.WriteAction(Localization.UseRussian ? "События добавлены в очередь экспорта" :
                    "Events added to export queue");
            }
            else
            {
                log.WriteAction(Localization.UseRussian ? "Отсутствуют события для экспорта" :
                    "No events to export");
            }
        }
예제 #4
0
        /// <summary>
        /// Экспортировать текущие данные, загрузив их из файла
        /// </summary>
        private void ExportCurDataFromFile(Exporter exporter)
        {
            // загрузка текущего среза из файла
            SrezTableLight srezTable = new SrezTableLight();
            SrezAdapter srezAdapter = new SrezAdapter();
            srezAdapter.FileName = ServerUtils.BuildCurFileName(Settings.ArcDir);

            try
            {
                srezAdapter.Fill(srezTable);
            }
            catch (Exception ex)
            {
                log.WriteAction(string.Format(Localization.UseRussian ? 
                    "Ошибка при загрузке текущего среза из файла {0}: {1}" :
                    "Error loading current data from file {0}: {1}", srezAdapter.FileName, ex.Message));
            }

            // добавление среза в очередь экспорта
            if (srezTable.SrezList.Count > 0)
            {
                SrezTableLight.Srez sourceSrez = srezTable.SrezList.Values[0];
                SrezTableLight.Srez srez = CreateSrez(DateTime.Now, sourceSrez.CnlNums, sourceSrez);
                exporter.EnqueueCurData(srez);
                log.WriteAction(Localization.UseRussian ? "Текущие данные добавлены в очередь экспорта" :
                    "Current data added to export queue");
            }
            else
            {
                log.WriteAction(Localization.UseRussian ? "Отсутствуют текущие данные для экспорта" :
                    "No current data to export");
            }
        }