예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }