diff options
author | Maksim Andrianov <maksimandrianov1@gmail.com> | 2020-10-09 12:38:47 +0300 |
---|---|---|
committer | mpimenov <mpimenov@users.noreply.github.com> | 2020-10-13 12:43:38 +0300 |
commit | c754c32c5271c17af079ee35758369008c80794a (patch) | |
tree | 0b38dc06872cc502a1be1a591e4260bdc28dc7a7 /generator | |
parent | 519fe79237e72ac707dc9c12fce7b694306ff49d (diff) |
[generator] Added 'cache_path' option.
Diffstat (limited to 'generator')
-rw-r--r-- | generator/generate_info.hpp | 7 | ||||
-rw-r--r-- | generator/generator_tool/generator_tool.cpp | 7 | ||||
-rw-r--r-- | generator/intermediate_data.cpp | 26 | ||||
-rw-r--r-- | generator/osm_source.cpp | 4 |
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); |