/// <summary>
        /// Реализация очереди обработки событий - получение данных
        /// </summary>
        /// <param name="s">Идентификатор события</param>
        /// <param name="error">Признак ошибки при выполнении</param>
        /// <param name="outobj">Объект с полученными данными</param>
        /// <returns>Результат выполнения метода</returns>
        protected override int StateCheckResponse(int s, out bool error, out object outobj)
        {
            int iRes = -1;

            DATASET       dataSet;
            StatesMachine state    = (StatesMachine)s;
            string        debugMsg = string.Empty;

            error  = true;
            outobj = null;

            ItemQueue itemQueue = null;

            try {
                switch (state)
                {
                case StatesMachine.NEW:     //
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    error = (iRes = addDataSet(_writer.ListConnSettKey, (DateTime)itemQueue.Pars[0], itemQueue.Pars[1] as DataTable, itemQueue.Pars[2] as DataTable)) < 0 ? true : false;;

                    debugMsg = string.Format(@"Добавление нового набора [{0}]...", (DateTime)itemQueue.Pars[0]);

                    if (error == false)
                    {
                        // добавленный набор поставить в очередь на запись
                        outobj = new DATASET_WRITER()
                        {
                            m_dtRecieved = _listDataSet[_listDataSet.Count - 1].m_dtRecieved
                            , m_values   = _listDataSet[_listDataSet.Count - 1].m_values
                        };

                        Logging.Logg().Debug(MethodBase.GetCurrentMethod(), debugMsg, Logging.INDEX_MESSAGE.NOT_SET);
                    }
                    else
                    {
                        Logging.Logg().Error(MethodBase.GetCurrentMethod(), debugMsg, Logging.INDEX_MESSAGE.NOT_SET);
                    }
                    break;

                case StatesMachine.LIST_DEST:     // получен спискок объектов с парметрами соединения с БД
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;
                    // инициализация переданными значениями
                    initialize(itemQueue.Pars[0] as List <WriterHandlerQueue.ConnectionSettings>);
                    // установка соединения с источниками данных
                    _writer.StartDbInterfaces();
                    // обеспечить готовность к приему событий (TSQL-запросов для выполнения)
                    _writer.Start(); _writer.Activate(true);
                    break;

                case StatesMachine.LIST_DATASET:     // запрос на формирование актуального списка переданных для записи наборов
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    if (!((int)itemQueue.Pars[0] < 0))
                    {
                        outobj = getListViewDataSetItem((int)itemQueue.Pars[0]);
                    }
                    else
                    {
                        ;
                    }
                    break;

                case StatesMachine.DATASET_CONTENT:     // запрос на передачу содержимого набора, выбранного пользователем для отображения
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    var selectDataSets = from l in _listDataSet where l.m_dtRecieved == (DateTime)itemQueue.Pars[0] select l;
                    if (selectDataSets.Count() == 1)
                    {
                        dataSet = selectDataSets.ElementAt(0);

                        switch ((FormMain.INDEX_CONTROL)itemQueue.Pars[1])
                        {
                        case FormMain.INDEX_CONTROL.TABPAGE_VIEW_DATASET_TABLE_VALUE:
                            outobj = dataSet.m_tableValues;
                            break;

                        case FormMain.INDEX_CONTROL.TABPAGE_VIEW_DATASET_TABLE_PARAMETER:
                            outobj = dataSet.m_tableParameters;
                            break;

                        default:         //??? - ошибка неизвестный тип вкладки просмотра набора
                            break;
                        }
                    }
                    else
                    {
                        ;     //??? - ошибка пакет не найден либо пакетов много
                    }
                    break;
                //case StatesMachine.STATISTIC: //
                //    iRes = 0;
                //    error = false;

                //    itemQueue = Peek;
                //    break;
                case StatesMachine.CONNSET_USE_CHANGED:
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;
                    _writer.ChangeConnSettUse((int)itemQueue.Pars[0]);
                    break;

                case StatesMachine.OPTION:
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;
                    s_Option  = (OPTION)itemQueue.Pars[0];

                    //outobj = ??? только в одну сторону: форма -> handler
                    break;

                default:
                    break;
                }
            } catch (Exception e) {
                Logging.Logg().Exception(e, @"WriteHandlerQueue::StateCheckResponse (state=" + state.ToString() + @") - ...", Logging.INDEX_MESSAGE.NOT_SET);

                error = true;
                iRes  = -1 * (int)state;
            }

            return(iRes);
        }
Exemple #2
0
        protected override int StateCheckResponse(int s, out bool error, out object outobj)
        {
            int           iRes     = -1;
            StatesMachine state    = (StatesMachine)s;
            string        debugMsg = string.Empty;

            error  = true;
            outobj = null;

            ItemQueue itemQueue = null;

            try {
                switch (state)
                {
                case StatesMachine.NEW:     //
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    error = (iRes = addDataSet(_writer.ListConnSettKey, (DateTime)itemQueue.Pars[0], itemQueue.Pars[1] as DataTable, itemQueue.Pars[2] as DataTable)) < 0 ? true : false;;

                    debugMsg = string.Format(@"Добавление нового набора [{0}]...", (DateTime)itemQueue.Pars[0]);

                    EvtToFormMain(new object[] { StatesMachine.MESSAGE_TO_STATUSSTRIP, FormMain.STATUS_STRIP_STATE.Debug, debugMsg });

                    if (error == false)
                    {
                        // добавленный набор поставить в очередь на запись
                        outobj = _listDataSet[_listDataSet.Count - 1].m_query;

                        Logging.Logg().Debug(MethodBase.GetCurrentMethod(), debugMsg, Logging.INDEX_MESSAGE.NOT_SET);
                    }
                    else
                    {
                        Logging.Logg().Error(MethodBase.GetCurrentMethod(), debugMsg, Logging.INDEX_MESSAGE.NOT_SET);
                    }
                    break;

                case StatesMachine.LIST_DEST:     // получен спискок объектов с парметрами соединения с БД
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;
                    // инициализация переданными значениями
                    initialize(itemQueue.Pars[0] as List <ConnectionSettings>);
                    // установка соединения с источниками данных
                    _writer.StartDbInterfaces();
                    // обеспечить готовность к приему событий (TSQL-запросов для выполнения)
                    _writer.Start(); _writer.Activate(true);
                    break;

                case StatesMachine.LIST_DATASET:     // запрос на формирование актуального списка переданных для записи наборов
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    if (!((int)itemQueue.Pars[0] < 0))
                    {
                        outobj = getListViewDataSetItem((int)itemQueue.Pars[0]);
                    }
                    else
                    {
                        ;
                    }
                    break;

                case StatesMachine.DATASET_CONTENT:     // запрос на передачу содержимого набора, выбранного пользователем для отображения
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;
                    break;
                //case StatesMachine.STATISTIC: //
                //    iRes = 0;
                //    error = false;

                //    itemQueue = Peek;
                //    break;
                case StatesMachine.CONNSET_USE_CHANGED:
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;
                    _writer.ChangeConnSettUse((int)itemQueue.Pars[0]);
                    break;

                default:
                    break;
                }
            } catch (Exception e) {
                Logging.Logg().Exception(e, @"WriteHandlerQueue::StateCheckResponse (state=" + state.ToString() + @") - ...", Logging.INDEX_MESSAGE.NOT_SET);

                error = true;
                iRes  = -1 * (int)state;
            }

            return(iRes);
        }