コード例 #1
0
        /// <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;
            StatesMachine state    = (StatesMachine)s;
            string        debugMsg = string.Empty;

            error  = true;
            outobj = null;

            ItemQueue itemQueue = null;

            try {
                switch (state)
                {
                case StatesMachine.UDP_CONNECTED_CHANGE:     // запрос-команда на изменение состояния (от формы)
                case StatesMachine.WRITER_READY_CHANGE:
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    outobj = itemQueue.Pars[0];
                    break;

                case StatesMachine.UDP_CONNECTED_CHANGED:     // событие - факт изменения состояния (от объекта - прослушивателя UDP)
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, itemQueue.Pars[0] });
                    break;

                case StatesMachine.UDP_LISTENER_PACKAGE_RECIEVED:     // получен очередной XML-пакет
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, itemQueue.Pars[0], itemQueue.Pars[1] });

                    debugMsg = @"получен XML-пакет, добавлен в очередь для обработки";
                    Logging.Logg().Debug(MethodBase.GetCurrentMethod(), debugMsg, Logging.INDEX_MESSAGE.NOT_SET);
                    Debug.WriteLine(string.Format(@"{0}: {1}", DateTime.Now.ToString(), debugMsg));
                    break;

                case StatesMachine.XML_PACKAGE_VERSION:     // версия(строка) шаблон XML-пакета
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    outobj = m_fileINI.XMLPackageVersion;
                    break;

                case StatesMachine.XML_PACKAGE_TEMPLATE:     // шаблон XML-пакета
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    outobj = m_fileINI.GetXMLPackageTemplate((string)itemQueue.Pars[0]);
                    break;

                case StatesMachine.NUDP_LISTENER:     // номер порта прослушивателя
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    outobj = m_fileINI.NUDPListener;
                    break;

                case StatesMachine.LIST_DEST:     // cписок источников данных (назначение - сохранение полученных значений)
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, m_fileINI.ListDest });
                    break;

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

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

            return(iRes);
        }
コード例 #2
0
        /// <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;
            StatesMachine state    = (StatesMachine)s;
            string        debugMsg = string.Empty;

            error  = true;
            outobj = null;

            ItemQueue itemQueue = null;

            try {
                switch (state)
                {
                case StatesMachine.UDP_CONNECTED_CHANGE:     // запрос-команда на изменение состояния (от формы)
                case StatesMachine.WRITER_READY_CHANGE:
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    outobj = itemQueue.Pars[0];
                    break;

                case StatesMachine.UDP_CONNECTED_CHANGED:     // событие - факт изменения состояния (от объекта - прослушивателя UDP)
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, itemQueue.Pars[0], itemQueue.Pars[1] });
                    break;

                case StatesMachine.UDP_LISTENER_PACKAGE_RECIEVED:     // получен очередной XML-пакет
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, itemQueue.Pars[0], itemQueue.Pars[1] });
                    break;

                case StatesMachine.XML_PACKAGE_VERSION:     // версия(строка) шаблон XML-пакета
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    outobj = m_fileINI.XMLPackageVersion;
                    break;

                case StatesMachine.XML_PACKAGE_TEMPLATE:     // шаблон XML-пакета
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    outobj = m_fileINI.GetXMLPackageTemplate((string)itemQueue.Pars[0]);
                    break;

                case StatesMachine.UDP_DEBUG:     // параметры отладки
                    iRes  = 0;
                    error = false;

                    //itemQueue = Peek;

                    outobj = m_fileINI.UDPDebug;
                    break;

                case StatesMachine.UDP_LISTENER:     // номер порта прослушивателя
                    iRes  = 0;
                    error = false;

                    //itemQueue = Peek;

                    outobj = m_fileINI.UDPListener;
                    break;

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

                    //itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, m_fileINI.LoggingSet });
                    break;

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

                    //itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, m_fileINI.OptionPackage });
                    break;

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

                    //itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, m_fileINI.OptionDataSet });
                    break;

                case StatesMachine.LIST_DEST:     // cписок источников данных (назначение - сохранение полученных значений)
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, m_fileINI.ListDest });
                    break;

                case StatesMachine.DEST_DETAIL:     // параметры соединения с источником данных
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    EvtToFormMain?.Invoke(new object[] { state, m_fileINI.ListDest.Find(connSett => { return(connSett.id == (int)itemQueue.Pars[0]); }) });
                    break;

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

                    EvtToFormMain?.Invoke(new object[] { state, m_fileINI.TimerUpdate });
                    break;

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

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

            return(iRes);
        }