public TrackerPacketList GetPackets() { TrackerPacketList points = new TrackerPacketList(); lock (m_Points) foreach (TrackerPacket packet in m_Points.Values) { points.Add(packet); } return(points); }
////////////////////////////////////////////////////////////////////////// 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; }