/// <summary> /// Добавить XML-пакет в список /// </summary> /// <param name="dtPackage">Метка даты/времени получения XML-пакета</param> /// <param name="xmlDoc">XML-документ</param> /// <returns>Признак выполнения метода</returns> private int addPackage(DateTime dtPackage, XmlDocument xmlDoc) { int iRes = 0; PACKAGE package; try { // добавить текущий пакет _listPackage.Add(package = new PACKAGE(dtPackage, xmlDoc)); Logging.Logg().Debug(MethodBase.GetCurrentMethod(), string.Format(@"добавлен пакет [{0}]", dtPackage), Logging.INDEX_MESSAGE.NOT_SET); s_Statistic.SetAt(STATISTIC.INDEX_ITEM.DATETIME_PACKAGE_LAST_RECIEVED, package.m_dtRecieved); s_Statistic.SetAt(STATISTIC.INDEX_ITEM.LENGTH_PACKAGE_LAST_RECIEVED, package.m_xmlSource.InnerXml.Length); s_Statistic.Counter(STATISTIC.INDEX_ITEM.COUNT_PACKAGE_RECIEVED); if (package.m_state == PACKAGE.STATE.PARSED) { s_Statistic.Counter(STATISTIC.INDEX_ITEM.COUNT_PACKAGE_PARSED); } else { ; } } catch (Exception e) { iRes = -1; Logging.Logg().Exception(e, string.Format(@"Добавление пакета дата/время получения={0} и статистики для него", dtPackage), Logging.INDEX_MESSAGE.NOT_SET); } return(iRes); }
/// <summary> /// Добавить XML-пакет в список /// </summary> /// <param name="dtPackage">Метка даты/времени получения XML-пакета</param> /// <param name="xmlDoc">XML-документ</param> /// <returns>Признак выполнения метода</returns> private int addPackage(DateTime dtPackage, XmlDocument xmlDoc) { int iRes = 0; PACKAGE package; // определить лимит даты/времени хранения пакетов времени выполнения DateTime dtLimit = dtPackage - TS_HISTORY_RUNTIME; //список индексов элементов(пакетов) для удаления List <int> listIndxToRemove = new List <int>(); for (int i = 0; i < _listPackage.Count; i++) { if ((dtLimit - _listPackage[i].m_dtRecieved).TotalSeconds > 0) { listIndxToRemove.Add(i); } else { ; } } // удалить пакеты дата/время получения которых больше, чем "лимит" listIndxToRemove.ForEach(indx => { Logging.Logg().Debug(MethodBase.GetCurrentMethod(), string.Format(@"удален пакет {0}", _listPackage[indx].m_dtRecieved), Logging.INDEX_MESSAGE.NOT_SET); _listPackage.RemoveAt(indx); }); // добавить текущий пакет (даже, если он не удовлетворяет критерию "лимит") try { _listPackage.Add(package = new PACKAGE(dtPackage, xmlDoc)); s_Statistic.SetAt(STATISTIC.INDEX_ITEM.DATETIME_PACKAGE_LAST_RECIEVED, package.m_dtRecieved); s_Statistic.SetAt(STATISTIC.INDEX_ITEM.LENGTH_PACKAGE_LAST_RECIEVED, package.m_tableValues.Rows.Count); s_Statistic.Counter(STATISTIC.INDEX_ITEM.COUNT_PACKAGE_RECIEVED); if (package.m_state == PACKAGE.STATE.PARSED) { s_Statistic.Counter(STATISTIC.INDEX_ITEM.COUNT_PACKAGE_PARSED); } else { ; } } catch (Exception e) { iRes = -1; Logging.Logg().Exception(e, string.Format(@"Добавление пакета дата/время получения={0} и статистики для него", dtPackage), Logging.INDEX_MESSAGE.NOT_SET); } return(iRes); }
/// <summary> /// Добавить набор в список наборов, принятых к обработке /// </summary> /// <param name="keys">Список идентификаторов источников данных</param> /// <param name="dtDataSet">Метка даты/времени отправления XML-пакета для обработки(сохранения в БД)</param> /// <param name="values">Результат обработки XML-пакета - таблица со значенями</param> /// <param name="parameters">Результат обработки XML-пакета - таблица с параметрами</param> /// <returns>Результат выполнения операции</returns> private int addDataSet(IEnumerable <int> keys, DateTime dtDataSet, DataTable values, DataTable parameters) { int iRes = 0; DATASET dataSet; // определить лимит даты/времени хранения пакетов времени выполнения DateTime dtLimit = dtDataSet - s_Option.TS_HISTORY_RUNTIME; //список индексов элементов(пакетов) для удаления List <int> listIndxToRemove = new List <int>(); for (int i = 0; i < _listDataSet.Count; i++) { if ((dtLimit - _listDataSet[i].m_dtRecieved).TotalSeconds > 0) { listIndxToRemove.Add(i); } else { ; } } // удалить пакеты дата/время получения которых больше, чем "лимит" listIndxToRemove.ForEach(indx => { Logging.Logg().Debug(MethodBase.GetCurrentMethod(), string.Format(@"удален набор [{0}]", _listDataSet[indx].m_dtRecieved), Logging.INDEX_MESSAGE.NOT_SET); _listDataSet.RemoveAt(indx); }); // добавить текущий пакет (даже, если он не удовлетворяет критерию "лимит") try { _listDataSet.Add(dataSet = new DATASET(keys, dtDataSet, values, parameters)); s_Statistic.SetAt(STATISTIC.INDEX_ITEM.DATETIME_DATASET_LAST_RECIEVED, dataSet.m_dtRecieved); s_Statistic.SetAt(STATISTIC.INDEX_ITEM.LENGTH_DATASET_LAST_RECIEVED, dataSet.m_tableValues.Rows.Count); s_Statistic.Counter(STATISTIC.INDEX_ITEM.COUNT_DATASET_RECIEVED); if (dataSet.m_state == DATASET.STATE.QUERED) { s_Statistic.Counter(STATISTIC.INDEX_ITEM.COUNT_DATASET_QUERED); } else { ; } } catch (Exception e) { iRes = -1; Logging.Logg().Exception(e, string.Format(@"Добавление набора дата/время получения={0} и статистики для него", dtDataSet), Logging.INDEX_MESSAGE.NOT_SET); } return(iRes); }