Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArsentiy Milchakov <milcars@mapswithme.com>2017-08-22 14:57:15 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2017-09-13 16:25:29 +0300
commit1eb176f6fefa4f0dfac0ce82865efafedb09655c (patch)
tree062aa3efc9ba1b6e47c1619cd4d0607836f386f9 /platform
parentfd45889908345f6692e82c2e07fe2e4e410cd612 (diff)
Apply diffs on startup
Diffstat (limited to 'platform')
-rw-r--r--platform/local_country_file_utils.cpp43
-rw-r--r--platform/local_country_file_utils.hpp2
2 files changed, 44 insertions, 1 deletions
diff --git a/platform/local_country_file_utils.cpp b/platform/local_country_file_utils.cpp
index b25809a4a4..8593bdbb74 100644
--- a/platform/local_country_file_utils.cpp
+++ b/platform/local_country_file_utils.cpp
@@ -138,6 +138,36 @@ inline string GetDataDirFullPath(string const & dataDir)
return dataDir.empty() ? platform.WritableDir()
: my::JoinFoldersToPath(platform.WritableDir(), dataDir);
}
+
+void FindAllDiffsInDirectory(string const & dir, vector<LocalCountryFile> & diffs)
+{
+ Platform & platform = GetPlatform();
+
+ Platform::TFilesWithType fwts;
+ platform.GetFilesByType(dir, Platform::FILE_TYPE_REGULAR, fwts);
+
+ for (auto const & fwt : fwts)
+ {
+ string name = fwt.first;
+
+ auto const isDiffReady =
+ strings::EndsWith(name, strings::to_string(DIFF_FILE_EXTENSION) + READY_FILE_EXTENSION);
+ auto const isDiff =
+ strings::EndsWith(name, DIFF_FILE_EXTENSION);
+
+ if (!isDiff && !isDiffReady)
+ continue;
+
+ my::GetNameWithoutExt(name);
+
+ if (isDiffReady)
+ my::GetNameWithoutExt(name);
+
+ LocalCountryFile localDiff(dir, CountryFile(name), 0 /* version */);
+
+ diffs.push_back(localDiff);
+ }
+}
} // namespace
void DeleteDownloaderFilesForCountry(int64_t version, CountryFile const & countryFile)
@@ -162,7 +192,6 @@ void FindAllLocalMapsInDirectoryAndCleanup(string const & directory, int64_t ver
int64_t latestVersion,
vector<LocalCountryFile> & localFiles)
{
- vector<string> files;
Platform & platform = GetPlatform();
Platform::TFilesWithType fwts;
@@ -224,6 +253,18 @@ void FindAllLocalMapsInDirectoryAndCleanup(string const & directory, int64_t ver
}
}
+void FindAllDiffs(string const & dataDir, vector<LocalCountryFile> & diffs)
+{
+ string const dir = GetDataDirFullPath(dataDir);
+ FindAllDiffsInDirectory(dir, diffs);
+
+ Platform::TFilesWithType fwts;
+ Platform::GetFilesByType(dir, Platform::FILE_TYPE_DIRECTORY, fwts);
+
+ for (auto const & fwt : fwts)
+ FindAllDiffsInDirectory(my::JoinFoldersToPath(dir, fwt.first /* subdir */), diffs);
+}
+
void FindAllLocalMapsAndCleanup(int64_t latestVersion, vector<LocalCountryFile> & localFiles)
{
FindAllLocalMapsAndCleanup(latestVersion, string(), localFiles);
diff --git a/platform/local_country_file_utils.hpp b/platform/local_country_file_utils.hpp
index 3d53918300..433dd643ac 100644
--- a/platform/local_country_file_utils.hpp
+++ b/platform/local_country_file_utils.hpp
@@ -55,6 +55,8 @@ void FindAllLocalMapsAndCleanup(int64_t latestVersion, vector<LocalCountryFile>
void FindAllLocalMapsAndCleanup(int64_t latestVersion, string const & dataDir,
vector<LocalCountryFile> & localFiles);
+void FindAllDiffs(string const & dataDir, vector<LocalCountryFile> & diffs);
+
// This method removes:
// * partially downloaded non-latest maps (with version less than |latestVersion|)
// * empty directories