Ejemplo n.º 1
0
 public static void Append(GPRS_DATA_RECORD data)
 {
     if (!IsRuning)
     {
         return;
     }
     if (DTUResolver1.TaskNumber < 4000)
     {
         DTUResolver1.Append(data);
     }
     else
     {
         if (DTUResolver2.TaskNumber < 4000)
         {
             DTUResolver2.Append(data);
         }
         else
         {
             if (DTUResolver3.TaskNumber < 4000)
             {
                 DTUResolver3.Append(data);
             }
             else
             {
                 TraceManager.AppendWarning("DTU解析队列三个消费者队列已达到上线无法插入");
             }
         }
     }
 }
Ejemplo n.º 2
0
        private static void HDAPIRefresh()
        {
            uint   i, iDtuAmount;
            string str = "";

            StringBuilder  mess      = new StringBuilder(1000);
            GPRS_USER_INFO user_info = new GPRS_USER_INFO();

            str        = str + 0x00 + 0x00 + 0x00;
            iDtuAmount = HDDTUAPI.get_max_user_amount();    // 取最大数量, 为 3000

            for (i = 0; i < iDtuAmount; i++)
            {
                HDDTUAPI.get_user_at(i, ref user_info);

                if (user_info.m_status == 1)    // 在线
                {
                    // 判断 DTU 最后注册时间与现在时间的差值是否超过设置的超时时间
                    if ((DateTime.Now - HDDTUAPI.ConvertToDateTime(user_info.m_update_time)) > TimeSpan.FromMinutes(dtuTimeoutNum))
                    {
                        string dtuID = user_info.m_userid;
                        // 若超时则认为该 DTU 不在线, 调用开发包函数使其下线
                        HDDTUAPI.do_close_one_user2(dtuID, mess);
                        // 从缓存队列移除
                        DTUInfo dtuCache = DTUCacheManager.GetDTUInfo(dtuID);
                        if (dtuCache != null)
                        {
                            DTUCacheManager.OperDTUCache(DTUCacheManager.OPeratingType.Delete, dtuID, null);//DTUCacheManager.RemoveDtuCache(dtuID);
                            // 下线状态回填数据库
                            DBWorker.Append(DBCommand.CreateDtuOffline(dtuID));
                        }
                        else
                        {
                            TraceManager.AppendWarning("DTU:" + dtuID + "超时未注册,从缓存队列移除未发现该对象!");
                        }
                        continue;
                    }
                }
            }
        }