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:
authorMaksim Andrianov <maksimandrianov1@gmail.com>2020-10-09 12:38:47 +0300
committermpimenov <mpimenov@users.noreply.github.com>2020-10-13 12:43:38 +0300
commitc754c32c5271c17af079ee35758369008c80794a (patch)
tree0b38dc06872cc502a1be1a591e4260bdc28dc7a7 /generator
parent519fe79237e72ac707dc9c12fce7b694306ff49d (diff)
[generator] Added 'cache_path' option.
Diffstat (limited to 'generator')
-rw-r--r--generator/generate_info.hpp7
-rw-r--r--generator/generator_tool/generator_tool.cpp7
-rw-r--r--generator/intermediate_data.cpp26
-rw-r--r--generator/osm_source.cpp4
4 files changed, 28 insertions, 16 deletions
diff --git a/generator/generate_info.hpp b/generator/generate_info.hpp
index 507d78ebaf..41fbfc9559 100644
--- a/generator/generate_info.hpp
+++ b/generator/generate_info.hpp
@@ -37,6 +37,8 @@ struct GenerateInfo
// Directory for all intermediate files.
std::string m_intermediateDir;
+ std::string m_cacheDir;
+
// Directory with isolines files.
std::string m_isolinesDir;
@@ -115,5 +117,10 @@ struct GenerateInfo
{
return base::JoinPath(m_intermediateDir, fileName + ext);
}
+
+ std::string GetCacheFileName(std::string const & fileName, std::string const & ext = "") const
+ {
+ return base::JoinPath(m_cacheDir, fileName + ext);
+ }
};
} // namespace feature
diff --git a/generator/generator_tool/generator_tool.cpp b/generator/generator_tool/generator_tool.cpp
index 4fcf99dda0..7b14a2b00e 100644
--- a/generator/generator_tool/generator_tool.cpp
+++ b/generator/generator_tool/generator_tool.cpp
@@ -100,7 +100,10 @@ DEFINE_string(osm_file_name, "", "Input osm area file.");
DEFINE_string(osm_file_type, "xml", "Input osm area file type [xml, o5m].");
DEFINE_string(data_path, "", GetDataPathHelp());
DEFINE_string(user_resource_path, "", "User defined resource path for classificator.txt and etc.");
-DEFINE_string(intermediate_data_path, "", "Path to stored nodes, ways, relations.");
+DEFINE_string(intermediate_data_path, "", "Path to stored intermediate data.");
+DEFINE_string(cache_path, "",
+ "Path to stored caches for nodes, ways, relations. "
+ "If 'cache_path' is empty, caches are stored to 'intermediate_data_path'.");
DEFINE_string(output, "", "File name for process (without 'mwm' ext).");
DEFINE_bool(preload_cache, false, "Preload all ways and relations cache.");
DEFINE_string(node_storage, "map",
@@ -241,6 +244,8 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv)
genInfo.m_intermediateDir = FLAGS_intermediate_data_path.empty()
? path
: base::AddSlashIfNeeded(FLAGS_intermediate_data_path);
+ genInfo.m_cacheDir = FLAGS_cache_path.empty() ? genInfo.m_intermediateDir
+ : base::AddSlashIfNeeded(FLAGS_cache_path);
genInfo.m_targetDir = genInfo.m_tmpDir = path;
/// @todo Probably, it's better to add separate option for .mwm.tmp files.
diff --git a/generator/intermediate_data.cpp b/generator/intermediate_data.cpp
index 2b746fbf75..9e3717a51c 100644
--- a/generator/intermediate_data.cpp
+++ b/generator/intermediate_data.cpp
@@ -376,25 +376,25 @@ IndexFileReader const & IntermediateDataObjectsCache::AllocatedObjects::GetOrCre
// IntermediateDataReader
IntermediateDataReader::IntermediateDataReader(
- IntermediateDataObjectsCache::AllocatedObjects & objs,
- feature::GenerateInfo const & info)
+ IntermediateDataObjectsCache::AllocatedObjects & objs, feature::GenerateInfo const & info)
: m_nodes(objs.GetPointStorageReader())
- , m_ways(objs, info.GetIntermediateFileName(WAYS_FILE), info.m_preloadCache)
- , m_relations(objs, info.GetIntermediateFileName(RELATIONS_FILE), info.m_preloadCache)
- , m_nodeToRelations(objs.GetOrCreateIndexReader(info.GetIntermediateFileName(NODES_FILE, ID2REL_EXT)))
- , m_wayToRelations(objs.GetOrCreateIndexReader(info.GetIntermediateFileName(WAYS_FILE, ID2REL_EXT)))
- , m_relationToRelations(objs.GetOrCreateIndexReader(info.GetIntermediateFileName(RELATIONS_FILE, ID2REL_EXT)))
+ , m_ways(objs, info.GetCacheFileName(WAYS_FILE), info.m_preloadCache)
+ , m_relations(objs, info.GetCacheFileName(RELATIONS_FILE), info.m_preloadCache)
+ , m_nodeToRelations(objs.GetOrCreateIndexReader(info.GetCacheFileName(NODES_FILE, ID2REL_EXT)))
+ , m_wayToRelations(objs.GetOrCreateIndexReader(info.GetCacheFileName(WAYS_FILE, ID2REL_EXT)))
+ , m_relationToRelations(
+ objs.GetOrCreateIndexReader(info.GetCacheFileName(RELATIONS_FILE, ID2REL_EXT)))
{}
// IntermediateDataWriter
IntermediateDataWriter::IntermediateDataWriter(PointStorageWriterInterface & nodes,
feature::GenerateInfo const & info)
: m_nodes(nodes)
- , m_ways(info.GetIntermediateFileName(WAYS_FILE))
- , m_relations(info.GetIntermediateFileName(RELATIONS_FILE))
- , m_nodeToRelations(info.GetIntermediateFileName(NODES_FILE, ID2REL_EXT))
- , m_wayToRelations(info.GetIntermediateFileName(WAYS_FILE, ID2REL_EXT))
- , m_relationToRelations(info.GetIntermediateFileName(RELATIONS_FILE, ID2REL_EXT))
+ , m_ways(info.GetCacheFileName(WAYS_FILE))
+ , m_relations(info.GetCacheFileName(RELATIONS_FILE))
+ , m_nodeToRelations(info.GetCacheFileName(NODES_FILE, ID2REL_EXT))
+ , m_wayToRelations(info.GetCacheFileName(WAYS_FILE, ID2REL_EXT))
+ , m_relationToRelations(info.GetCacheFileName(RELATIONS_FILE, ID2REL_EXT))
{}
void IntermediateDataWriter::AddRelation(Key id, RelationElement const & e)
@@ -458,7 +458,7 @@ IntermediateData::IntermediateData(IntermediateDataObjectsCache & objectsCache,
, m_info(info)
{
auto & allocatedObjects = m_objectsCache.GetOrCreatePointStorageReader(
- info.m_nodeStorageType, info.GetIntermediateFileName(NODES_FILE));
+ info.m_nodeStorageType, info.GetCacheFileName(NODES_FILE));
m_reader = make_shared<IntermediateDataReader>(allocatedObjects, info);
}
diff --git a/generator/osm_source.cpp b/generator/osm_source.cpp
index 360f24da4a..6a76031595 100644
--- a/generator/osm_source.cpp
+++ b/generator/osm_source.cpp
@@ -246,8 +246,8 @@ bool ProcessorOsmElementsFromXml::TryRead(OsmElement & element)
bool GenerateIntermediateData(feature::GenerateInfo & info)
{
- auto nodes = cache::CreatePointStorageWriter(info.m_nodeStorageType,
- info.GetIntermediateFileName(NODES_FILE));
+ auto nodes =
+ cache::CreatePointStorageWriter(info.m_nodeStorageType, info.GetCacheFileName(NODES_FILE));
cache::IntermediateDataWriter cache(*nodes, info);
TownsDumper towns;
SourceReader reader = info.m_osmFileName.empty() ? SourceReader() : SourceReader(info.m_osmFileName);