Example #1
0
        protected override int StateResponse(int state,object obj)
        {
            int       iRes  = 0;
            DataTable table = obj as DataTable;

            //string msg = @"HHandlerDbULoaderDest::StateResponse () ::" + ((StatesMachine)state).ToString() + @" - "
            //    + @"[" + PlugInId + @", key=" + m_IdGroupSignalsCurrent + @"] ";

            try
            {
                switch (state)
                {
                case (int)StatesMachine.Values:
                    //msg =+ @"Ok ...";
                    //Logging.Logg().Debug(@"Получено строк [" + PlugInId + @", key=" + IdGroupSignalsCurrent + @"]: " + (table as DataTable).Rows.Count, Logging.INDEX_MESSAGE.NOT_SET);
                    if (TableRecieved == null)
                    {
                        TableRecieved = new DataTable();
                    }
                    else
                    {
                        ;
                    }

                    TableRecieved = GroupSignals.clearDupValues(table);
                    break;

                default:
                    break;
                }
            }
            catch (Exception e)
            {
                Logging.Logg().Exception(e,Logging.INDEX_MESSAGE.NOT_SET,@"HHandlerDbULoader::StateResponse (::" + ((StatesMachine)state).ToString() + @") - ...");
            }

            //Logging.Logg().Debug(msg, Logging.INDEX_MESSAGE.NOT_SET);
            //Console.WriteLine (msg);

            return(iRes);
        }
Example #2
0
        protected override int StateResponse(int state,object obj)
        {
            int       iRes  = 0;
            DataTable table = obj as DataTable;
            string    msg   = string.Empty;

            try
            {
                switch (state)
                {
                case (int)StatesMachine.CurrentTime:
                    m_dtServer = (DateTime)(table as DataTable).Rows[0][0];
                    //msg =+ @"DATETIME=" + m_dtServer.ToString(@"dd.MM.yyyy HH.mm.ss.fff") + @"...";
                    break;

                case (int)StatesMachine.Values:
                    RowCountRecieved = table.Rows.Count;

                    //msg = @"Получено строк [" + PlugInId + @", key=" + IdGroupSignalsCurrent + @"]: " + (table as DataTable).Rows.Count;
                    //Console.WriteLine (msg);
                    //Logging.Logg().Debug(msg, Logging.INDEX_MESSAGE.NOT_SET);

                    if (TableRecieved == null)
                    {
                        TableRecieved = new DataTable();
                    }
                    else
                    {
                        ;
                    }

                    //int iPrev = -1, iDupl = -1, iAdd = -1, iCur = -1;
                    //iPrev = 0; iDupl = 0; iAdd = 0; iCur = 0;
                    //iPrev = TableResults.Rows.Count;

                    //if (results.Rows.Count == 0)
                    //{
                    //    results = table.Copy ();
                    //}
                    //else
                    //    ;

                    //!!! Перенесена в библ. для "вставки"
                    ////Удалить из таблицы записи, метки времени в которых, совпадают с метками времени в таблице-рез-те предыдущего опроса
                    //iDupl = clearDupValues (ref table);

                    ////!!! Перенесена в библ. для "вставки"
                    ////Сформировать таблицу с "новыми" данными
                    //DataTable tableIns = getTableIns(ref table);
                    //tableIns.Columns.Add(@"tmdelta", typeof(int));

                    //iAdd = table.Rows.Count;
                    //TableResults.Merge(table);
                    //iCur = TableResults.Rows.Count;
                    //Console.WriteLine(@"Объединение таблицы-рез-та: [было=" + iPrev + @", дублирущих= " + iDupl + @", добавлено=" + iAdd + @", стало=" + iCur + @"]");

                    TableRecieved = GroupSignals.clearDupValues(table);
                    break;

                default:
                    break;
                }
            }
            catch (Exception e)
            {
                Logging.Logg().Exception(e,Logging.INDEX_MESSAGE.NOT_SET,@"HHandlerDbULoader::StateResponse (::" + ((StatesMachine)state).ToString() + @") - ...");
            }

            //Logging.Logg().Debug(msg, Logging.INDEX_MESSAGE.NOT_SET);
            //Console.WriteLine (msg);

            return(iRes);
        }
Example #3
0
 public SIGNALDest(GroupSignals parent,int idMain,int idLink)
     : base(parent,idMain,string.Empty)   // 2-й параметр может указывать на формулу, но в 'Dest' формулы пока не предусмотрены
 {
     this.m_idLink = idLink;
 }
Example #4
0
 public SIGNALStatKKSNAMEsql(GroupSignals parent,int idMain,int idLink,string statKKSName)
     : base(parent,idMain,idLink)
 {
     m_strStatKKSName = statKKSName;
 }
Example #5
0
 public SIGNALIDsql(GroupSignals parent,int idMain,int idLink,int idTarget)
     : base(parent,idMain,idLink)
 {
     m_idTarget = idTarget;
 }
Example #6
0
        /// <summary>
        /// Потоковая функция очереди обработки объектов с событиями
        /// </summary>
        private void fThreadQueue()
        {
            bool bRes = false;

            while (!(threadQueueIsWorking < 0))
            {
                bRes = false;

                //Проверить наличие объектов для обработки
                lock (m_lockQueue)
                {
                    bRes = QueueCount > 0;
                }

                if (bRes == false)
                {
                    //Ожидать когда появятся объекты для обработки
                    //bRes = m_semaQueue.WaitOne();
                    bRes = m_autoResetEvtQueue.WaitOne();
                }
                else
                {
                    ; //Начать обработку немедленно
                }
                while (true)
                {
                    lock (m_lockQueue)
                    {
                        if (QueueCount == 0)
                        {
                            //Прервать, если обработаны все объекты
                            break;
                        }
                        else
                        {
                            ;
                        }
                    }
                    //Получить объект очереди событий
                    m_IdGroupSignalsCurrent = m_queueIdGroupSignals.Peek();

                    State = GroupSignals.STATE.ACTIVE;

                    //Logging.Logg().Debug(@"HHandlerDbULoader::fThreadQueue () - начало обработки группы событий очереди (ID_PLUGIN=" + (_iPlugin as PlugInBase)._Id + @", ID_GSGNLS=" + m_IdGroupSignalsCurrent + @")", Logging.INDEX_MESSAGE.NOT_SET);

                    lock (m_lockState)
                    {
                        //Очистить все состояния
                        ClearStates();
                        //Добавить все состояния
                        addAllStates();
                    }

                    //Обработать все состояния
                    Run(@"HHandlerDbULoader::fThreadQueue ()");

                    //Ожидать обработки всех состояний
                    m_waitHandleState[(int)INDEX_WAITHANDLE_REASON.SUCCESS].WaitOne(System.Threading.Timeout.Infinite);

                    lock (m_lockQueue)
                    {
                        //Удалить объект очереди событий (обработанный)
                        m_queueIdGroupSignals.Dequeue();
                    }

                    GroupSignals.STATE newState = GroupSignals.NewState(Mode,State);

                    lock (m_lockStateGroupSignals)
                    {
                        State = newState;
                    }

                    ((PlugInBase)_iPlugin).DataAskedHost(getDataAskedHost());

                    //Logging.Logg().Debug(@"HHandlerDbULoader::fThreadQueue () - окончание обработки группы событий очереди (ID_PLUGIN=" + (_iPlugin as PlugInBase)._Id + @", ID_GSGNLS=" + m_IdGroupSignalsCurrent + @")", Logging.INDEX_MESSAGE.NOT_SET);

                    try
                    {
                        m_IdGroupSignalsCurrent = -1;
                    }
                    catch (Exception e)
                    {
                        Logging.Logg().Exception(e,Logging.INDEX_MESSAGE.NOT_SET,@"HHandlerDbULoader.fThreadQueue () - ...");
                    }
                }
            }
            //Освободить ресурс ядра ОС
            //??? "везде" 'true'
            if (bRes == true)
            {
                try
                {
                    //m_semaQueue.Release(1);
                    m_autoResetEvtQueue.Reset();
                }
                catch (Exception e)
                { //System.Threading.SemaphoreFullException
                    Logging.Logg().Exception(e,Logging.INDEX_MESSAGE.NOT_SET,"HHandlerDbULoader::fThreadQueue () - semaState.Release(1)");
                }
            }
            else
            {
                ;
            }
        }