Example #1
0
    public TrackerPacketList GetPackets()
    {
        TrackerPacketList points = new TrackerPacketList();

        lock (m_Points)
            foreach (TrackerPacket packet in m_Points.Values)
            {
                points.Add(packet);
            }
        return(points);
    }
Example #2
0
    //////////////////////////////////////////////////////////////////////////
    void Tick(object obj)
    {
        if (m_bRunning)
        {
            return;
        }
        m_bRunning = true;
        try
        {
            TrackerPacketList list = new TrackerPacketList();
            lock (m_Points)
            {
                foreach (TrackerPacket packet in m_Points4DB.Values)
                {
                    list.Add(packet);
                }
                m_Points4DB.Clear();
            }

            if (list.Count > 0)
            {
                using (CDatabase db = Configuration.inst().GetDB())
                {
                    if (db.IsConnected())
                    {
                        using (MySqlCommand cmdUpdate = new MySqlCommand("UPDATE " + m_strTable + " SET Time=?Time, Lat=?Lat, Lng=?Lng, Status=?Status, Speed=?Speed, Alt=?Alt, IO=?IO, GSMInfo=?GSMInfo WHERE TrackerID = ?ID AND Time <= ?Time", db.connection))
                        {
                            cmdUpdate.Parameters.Add("?ID", MySqlDbType.Int32);
                            cmdUpdate.Parameters.Add("?Time", MySqlDbType.Int32);
                            cmdUpdate.Parameters.Add("?Lat", MySqlDbType.Float);
                            cmdUpdate.Parameters.Add("?Lng", MySqlDbType.Float);
                            cmdUpdate.Parameters.Add("?Alt", MySqlDbType.Int32);
                            cmdUpdate.Parameters.Add("?Speed", MySqlDbType.Int32);
                            cmdUpdate.Parameters.Add("?Status", MySqlDbType.Int32);
                            cmdUpdate.Parameters.Add("?IO", MySqlDbType.Blob);
                            cmdUpdate.Parameters.Add("?GSMInfo", MySqlDbType.UInt64);
                            using (MySqlTransaction trans = db.connection.BeginTransaction())
                            {
                                for (int i = 0; i < list.Count; i++)
                                {
                                    if (!list[i].Write2DB(cmdUpdate))
                                    {
                                        break;
                                    }
                                }
                                trans.Commit();
                            }
                        }
                    }
                    else
                    {
                        m_Logger.Push(LogLevel.ERROR, 0, "Could not connect to database");
                    }
                }
            }
        }
        catch (Exception e)
        {
            m_Logger.Push(LogLevel.ERROR, 0, e.ToString());
        }
        m_bRunning = false;
    }