/// <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); }
/// <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); }