示例#1
0
    //////////////////////////////////////////////////////////////////////
    public CTrackerList GetTrackers()
    {
        CTrackerList trackers = new CTrackerList();

        lock (m_TrackersByID)
            foreach (CTracker tracker in m_TrackersByID.Values)
            {
                trackers.Add(tracker);
            }
        return(trackers);
    }
示例#2
0
    //////////////////////////////////////////////////////////////////////
    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;
                }
            }
    }
示例#3
0
    //////////////////////////////////////////////////////////////////////////
    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;
    }
示例#4
0
    //////////////////////////////////////////////////////////////////////
    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];
            }
        }
    }