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解析队列三个消费者队列已达到上线无法插入"); } } } }
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; } } } }