Пример #1
0
        static private void _Extract()
        {
            try
            {
                //LogHelper.Write("[EXTRACT:BEGIN] _Extract thread is started", "UDPProcess._Extract");
                while (IsRunning)
                {
                    Thread.Sleep(ConfigHelper.DelayGetPending);
                    try
                    {
                        //LogHelper.Write("[EXTRACT:LOOP] _Extracting", "UDPProcess._Extract");

                        ReturnInfo ri = Integrator.GetPendingMessages();
                        if (ri.Code != ReturnCode.Success)
                        {
                            //LogHelper.Write(ri, "UDPProcess._Transmit");
                            continue;
                        }

                        List <Message> list = null;
                        if (ri.Data != null)
                        {
                            if (ri.Data is List <Message> )
                            {
                                list = (List <Message>)ri.Data;
                            }
                            else if (ri.Data is Message[])
                            {
                                list = new List <Message>((Message[])ri.Data);
                            }
                            else
                            {
                                //LogHelper.Write(string.Format("[EXTRACT:DO] Data is not List<Message> ({0})", ri.Data.GetType()), "UDPProcess._Transmit", LogLevel.ERROR);
                                continue;
                            }
                        }

                        lock (_cmd_SF)
                        {
                            foreach (Message msg in list)
                            {
                                /*
                                 * check delay to send MESSAGE
                                 */
                                //if (msg.time.Add(TimeSpan.FromMilliseconds(ConfigHelper.DelayToSend)) < DateTime.Now)
                                //    continue;

                                if (!_Commands.ContainsKey(msg.device_eqid))
                                {
                                    //LogHelper.Write(string.Format("[EXTRACT:DO] Add new pending message (#EQID={0};#CMD={1};)", msg.device_eqid, msg.command), "UDPProcess._Transmit");
                                    _Commands.Add(msg.device_eqid, msg);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        //LogHelper.Write(ex, "UDPProcess._Extract");
                    }
                }
            }
            catch (Exception ex)
            {
                //LogHelper.Write(ex, "UDPProcess._Extract");
            }
            finally
            {
                //LogHelper.Write("[EXTRACT:END] _Extract thread is stopped", "UDPProcess._Extract");
            }
        }