////////////////////////////////////////////////////////////////////// public CTrackerList GetTrackers() { CTrackerList trackers = new CTrackerList(); lock (m_TrackersByID) foreach (CTracker tracker in m_TrackersByID.Values) { trackers.Add(tracker); } return(trackers); }
////////////////////////////////////////////////////////////////////// void ReloadConfig(object obj)//зачитываем данные из Ѕƒ { Dictionary <long, CTracker> trackersByIMEI = new Dictionary <long, CTracker>(); using (CDatabase db = Configuration.inst().GetDB()) if (db.IsConnected()) { CTrackerList trackers = new CTrackerList(); if (!trackers.Load(db)) { m_Logger.Push(LogLevel.ERROR, 0, "Error loading trackers list"); } for (int i = 0; i < trackers.Count; i++) { trackersByIMEI[trackers[i].m_IMEI] = trackers[i]; } //////////////////////////////////////////////////////////////////////////////////////// try { //вставим точки дл¤ трекеров в curpos using (MySqlCommand cmd = new MySqlCommand("INSERT INTO curpos(TrackerID) SELECT ID FROM Trackers ON DUPLICATE KEY UPDATE curpos.TrackerID=Trackers.ID", db.connection)) cmd.ExecuteNonQuery(); //вставим точки дл¤ трекеров в lastpoint using (MySqlCommand cmd = new MySqlCommand("INSERT INTO lastpoint(TrackerID) SELECT ID FROM Trackers ON DUPLICATE KEY UPDATE lastpoint.TrackerID=Trackers.ID", db.connection)) cmd.ExecuteNonQuery(); } catch (Exception ex) { m_Logger.Push(LogLevel.ERROR, 0, ex.ToString()); } } else { m_Logger.Push(LogLevel.ERROR, 0, "Cant connect to db"); } //////////////////////////////////////////////////////////////////////////////////////// lock (m_TrackersByIMEI) lock (m_TrackersByID) { m_TrackersByIMEI.Clear(); m_TrackersByID.Clear(); foreach (CTracker tracker in trackersByIMEI.Values) { m_TrackersByIMEI[tracker.m_IMEI] = tracker; m_TrackersByID[tracker.m_nID] = tracker; } } }
////////////////////////////////////////////////////////////////////////// void Tick(object obj) { if (m_bRunning) { return; } m_bRunning = true; int now = CTime.GetTime(DateTime.UtcNow); if (m_LastTrackerListLoadTime < now - 12 * 3600 && m_nTrackerIndex >= m_Trackers.Count) { m_Trackers = ConfigMgr.inst().GetTrackers(); m_LastTrackerListLoadTime = now; m_nTrackerIndex = 0; ClearCommonLogs(); int t = CTime.GetTime(DateTime.UtcNow); if (t - now > 1) { m_Logger.Push(LogLevel.WARNING, 0, "Common data cleared for " + (t - now) + " sec"); } } now = CTime.GetTime(DateTime.UtcNow); if (m_nTrackerIndex < m_Trackers.Count) { CTracker tracker = m_Trackers[m_nTrackerIndex++]; ClearLogsForTracker(tracker); int t = CTime.GetTime(DateTime.UtcNow); if (t - now > 1) { m_Logger.Push(LogLevel.WARNING, 0, "Data for " + tracker.GetDesc() + " cleared for " + (t - now) + " sec"); } } m_bRunning = false; }
////////////////////////////////////////////////////////////////////// void ReloadConfig(object obj)//зачитываем данные из БД { CTrackerList trackers = new CTrackerList(); Dictionary <long, CTracker> trackersByIMEI = new Dictionary <long, CTracker>(); List <ulong> zones2users = new List <ulong>(); //List<ulong> trackers2users = new List<ulong>(); CUserList users = new CUserList(); using (CDatabase db = Configuration.inst().GetDB()) if (db.IsConnected()) { if (!trackers.Load(db)) { m_Logger.Push(LogLevel.ERROR, 0, "Ошибка загрузки списка трекеров"); } users.Load(db); //////////////////////////////////////////////////////////////////////////////////////// try { //вставим точки для трекеров в curpos using (MySqlCommand cmd = new MySqlCommand("INSERT IGNORE INTO curpos(TrackerID) SELECT ID FROM Trackers", db.connection)) cmd.ExecuteNonQuery(); //вставим точки для трекеров в lastpoint using (MySqlCommand cmd = new MySqlCommand("INSERT IGNORE INTO lastpoint(TrackerID) SELECT ID FROM Trackers", db.connection)) cmd.ExecuteNonQuery(); } catch (Exception ex) { m_Logger.Push(LogLevel.ERROR, 0, ex.ToString()); } } else { m_Logger.Push(LogLevel.ERROR, 0, "Не удалось соединиться с БД"); } //////////////////////////////////////////////////////////////////////////////////////// lock (m_TrackersByIMEI) lock (m_TrackersByID) { m_TrackersByIMEI.Clear(); m_TrackersByID.Clear(); for (int i = 0; i < trackers.Count; i++) { m_TrackersByIMEI[trackers[i].m_IMEI] = trackers[i]; m_TrackersByID[trackers[i].m_nID] = trackers[i]; } } /*lock (m_TrackersByUserID) * { * m_TrackersByUserID.Clear(); * for (int i = 0; i < trackers.Count; i++) * m_TrackersByUserID.Add(trackers[i].m_nUserID, trackers[i]); * * for (int i = 0; i < trackers2users.Count; i++) * { * int ID = (int)(trackers2users[i] & 0xFFFFFFFF); * int userID = (int)(trackers2users[i] >> 32); * * CTracker tracker = GetTrackerByID(ID); * if (tracker != null) * m_TrackersByUserID.Add(userID, tracker); * } * }*/ //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// lock (m_Users) { m_Users.Clear(); for (int i = 0; i < users.Count; i++) { m_Users[users[i].m_nID] = users[i]; } } }