[Pkg-running-devel] [antpm] 26/31: antpm: don't download fit files already in database

Kristof Ralovich ralovich-guest at moszumanska.debian.org
Fri Mar 24 23:19:38 UTC 2017


This is an automated email from the git hooks/post-receive script.

ralovich-guest pushed a commit to branch master
in repository antpm.

commit e50f524468340a07b0a686a2552a675bbdddde8f
Author: RALOVICH, Kristof <tade60 at freemail.hu>
Date:   Fri Mar 24 16:51:43 2017 +0100

    antpm: don't download fit files already in database
---
 src/AntFr310XT.cpp     |  6 ++++++
 src/DeviceSettings.cpp |  2 +-
 src/DeviceSettings.hpp |  4 ++--
 src/FIT.cpp            | 26 ++++++++++++++++++++++++++
 src/FIT.hpp            |  2 ++
 5 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/src/AntFr310XT.cpp b/src/AntFr310XT.cpp
index 4bbb930..107fadb 100644
--- a/src/AntFr310XT.cpp
+++ b/src/AntFr310XT.cpp
@@ -496,6 +496,8 @@ AntFr310XT::handleEvents()
   }
   else if(state == ST_ANTFS_DL_DIRECTORY)
   {
+    Database db = m_ds->getDatabaseFiles();
+
     CHECK_RETURN_FALSE(createDownloadFolder());
 
     //ANTFS_Upload(); //command pipe
@@ -518,6 +520,10 @@ AntFr310XT::handleEvents()
     LOG_VAR(zfc.activityFiles.size());
     LOG_VAR(zfc.courseFiles.size());
     LOG_VAR(zfc.waypointsFiles.size());
+    zfc.cullFitFiles(db);
+    LOG_VAR(zfc.activityFiles.size());
+    LOG_VAR(zfc.courseFiles.size());
+    LOG_VAR(zfc.waypointsFiles.size());
 
     // TODO: read bcast here?
 
diff --git a/src/DeviceSettings.cpp b/src/DeviceSettings.cpp
index 7d60f36..d8caee0 100644
--- a/src/DeviceSettings.cpp
+++ b/src/DeviceSettings.cpp
@@ -113,7 +113,7 @@ DeviceSettings::getDatabaseFiles(size_t count) const
         {
           continue;
         }
-        files.insert(DatabaseEntity(static_cast<ushort>(value),
+        files.insert(DatabaseEntity(static_cast<uint16_t>(value),
                                     FITEntity(fit.path().string(), fs::file_size(fit.path()))));
       }
     }
diff --git a/src/DeviceSettings.hpp b/src/DeviceSettings.hpp
index d3e6cc8..65fa8ee 100644
--- a/src/DeviceSettings.hpp
+++ b/src/DeviceSettings.hpp
@@ -33,8 +33,8 @@ namespace antpm {
 
 // <fileIdx, <path, bytes> >
 typedef std::pair<std::string, size_t> FITEntity;
-typedef std::multimap<ushort, FITEntity> Database;
-typedef std::pair<ushort, FITEntity> DatabaseEntity;
+typedef std::multimap<uint16_t, FITEntity> Database;
+typedef std::pair<uint16_t, FITEntity> DatabaseEntity;
 
 class DeviceSettings
 {
diff --git a/src/FIT.cpp b/src/FIT.cpp
index 048b3c1..99c9fed 100644
--- a/src/FIT.cpp
+++ b/src/FIT.cpp
@@ -66,6 +66,32 @@ ZeroFileContent::getFitFileTime(const uint16_t idx)
   return 0;
 }
 
+void ZeroFileContent::cullFitFiles(const std::multimap<uint16_t, std::pair<string, size_t> >& files)
+{
+    for(auto it : files)
+    {
+        cullFitFile(it.first, it.second.second);
+    }
+}
+
+void ZeroFileContent::cullFitFile(const uint16_t idx, const size_t file_size_bytes)
+{
+    auto remover = [this,idx,file_size_bytes](uint16_t file_idx)
+    {
+        ZeroFileRecord& zfRecord(zfRecords[file_idx]);
+        if(idx == file_idx && file_size_bytes == zfRecord.fileSize) {
+            return true;
+        }
+        return false;
+    };
+    waypointsFiles.erase(std::remove_if(waypointsFiles.begin(), waypointsFiles.end(),
+                                        remover), waypointsFiles.end());
+    activityFiles.erase(std::remove_if(activityFiles.begin(), activityFiles.end(),
+                                       remover), activityFiles.end());
+    courseFiles.erase(std::remove_if(courseFiles.begin(), courseFiles.end(),
+                                      remover), courseFiles.end());
+}
+
 
 FIT::FIT()
 {
diff --git a/src/FIT.hpp b/src/FIT.hpp
index f848cec..41cdedf 100644
--- a/src/FIT.hpp
+++ b/src/FIT.hpp
@@ -284,6 +284,8 @@ public:
     std::vector<uint16_t> waypointsFiles;
     std::vector<uint16_t> courseFiles;
     std::time_t getFitFileTime(const uint16_t idx); // represented in garmintime
+    void cullFitFiles(const std::multimap<uint16_t, std::pair<std::string, size_t>>& files);
+    void cullFitFile(const uint16_t idx, const size_t file_size_bytes);
 };
 
 class FIT

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-running/antpm.git



More information about the Pkg-running-devel mailing list