From 8da40419ee978b5d73c5ab4b3547819bc48627b7 Mon Sep 17 00:00:00 2001 From: Pepijn Schoen Date: Fri, 7 Jul 2017 16:42:07 +0200 Subject: [PATCH] Maintain storage_config exposed API --- example/example.cpp | 2 +- include/extractor/extractor_config.hpp | 5 +++++ include/nodejs/node_osrm_support.hpp | 10 ++++----- include/partition/partition_config.hpp | 5 +++++ include/storage/io_config.hpp | 29 +++++++++++++------------- include/storage/storage_config.hpp | 5 +++++ include/updater/updater_config.hpp | 5 +++++ src/benchmarks/match.cpp | 2 +- src/tools/routed.cpp | 2 +- src/tools/store.cpp | 3 +-- unit_tests/library/fixture.hpp | 2 +- unit_tests/library/limits.cpp | 10 ++++----- unit_tests/library/options.cpp | 6 +++--- 13 files changed, 52 insertions(+), 34 deletions(-) diff --git a/example/example.cpp b/example/example.cpp index 2eee389ae..edce8d17a 100644 --- a/example/example.cpp +++ b/example/example.cpp @@ -30,7 +30,7 @@ int main(int argc, const char *argv[]) // Configure based on a .osrm base path, and no datasets in shared mem from osrm-datastore EngineConfig config; - config.storage_config.UseDefaultOutputNames(argv[1]); + config.storage_config = {argv[1]}; config.use_shared_memory = false; // Routing machine with several services (such as Route, Table, Nearest, Trip, Match) diff --git a/include/extractor/extractor_config.hpp b/include/extractor/extractor_config.hpp index 7cb7bb499..f4054c3e2 100644 --- a/include/extractor/extractor_config.hpp +++ b/include/extractor/extractor_config.hpp @@ -72,6 +72,11 @@ struct ExtractorConfig final : storage::IOConfig { } + void UseDefaultOutputNames(const boost::filesystem::path &base) + { + IOConfig::UseDefaultOutputNames(base); + } + boost::filesystem::path input_path; boost::filesystem::path profile_path; diff --git a/include/nodejs/node_osrm_support.hpp b/include/nodejs/node_osrm_support.hpp index f20b5357b..fc67f2087 100644 --- a/include/nodejs/node_osrm_support.hpp +++ b/include/nodejs/node_osrm_support.hpp @@ -97,9 +97,8 @@ inline engine_config_ptr argumentsToEngineConfig(const Nan::FunctionCallbackInfo if (args[0]->IsString()) { - std::string base_path(*v8::String::Utf8Value(args[0]->ToString())); - engine_config->storage_config = osrm::StorageConfig(); - engine_config->storage_config.UseDefaultOutputNames(base_path); + engine_config->storage_config = osrm::StorageConfig( + *v8::String::Utf8Value(Nan::To(args[0]).ToLocalChecked())); engine_config->use_shared_memory = false; return engine_config; } @@ -122,9 +121,8 @@ inline engine_config_ptr argumentsToEngineConfig(const Nan::FunctionCallbackInfo if (!path->IsUndefined()) { - std::string base_path(*v8::String::Utf8Value(path->ToString())); - engine_config->storage_config = osrm::StorageConfig(); - engine_config->storage_config.UseDefaultOutputNames(base_path); + engine_config->storage_config = + osrm::StorageConfig(*v8::String::Utf8Value(Nan::To(path).ToLocalChecked())); engine_config->use_shared_memory = false; } if (!shared_memory->IsUndefined()) diff --git a/include/partition/partition_config.hpp b/include/partition/partition_config.hpp index 22e23f7ce..7b747588a 100644 --- a/include/partition/partition_config.hpp +++ b/include/partition/partition_config.hpp @@ -26,6 +26,11 @@ struct PartitionConfig final : storage::IOConfig { } + void UseDefaultOutputNames(const boost::filesystem::path &base) + { + IOConfig::UseDefaultOutputNames(base); + } + unsigned requested_num_threads; double balance; diff --git a/include/storage/io_config.hpp b/include/storage/io_config.hpp index 734150968..ab90298ed 100644 --- a/include/storage/io_config.hpp +++ b/include/storage/io_config.hpp @@ -23,6 +23,21 @@ struct IOConfig { } + bool IsValid() const; + boost::filesystem::path GetPath(const std::string &fileName) const + { + if (!IsConfigured(fileName, required_input_files) && + !IsConfigured(fileName, optional_input_files) && !IsConfigured(fileName, output_files)) + { + throw util::exception("Tried to access file which is not configured: " + fileName); + } + + return {base_path.string() + fileName}; + } + + boost::filesystem::path base_path; + + protected: // Infer the base path from the path of the .osrm file void UseDefaultOutputNames(const boost::filesystem::path &base) { @@ -45,20 +60,6 @@ struct IOConfig base_path = {path}; } - bool IsValid() const; - boost::filesystem::path GetPath(const std::string &fileName) const - { - if (!IsConfigured(fileName, required_input_files) && - !IsConfigured(fileName, optional_input_files) && !IsConfigured(fileName, output_files)) - { - throw util::exception("Tried to access file which is not configured: " + fileName); - } - - return {base_path.string() + fileName}; - } - - boost::filesystem::path base_path; - private: static bool IsConfigured(const std::string &fileName, const std::vector &paths) diff --git a/include/storage/storage_config.hpp b/include/storage/storage_config.hpp index f947fef03..d2a208add 100644 --- a/include/storage/storage_config.hpp +++ b/include/storage/storage_config.hpp @@ -44,6 +44,11 @@ namespace storage */ struct StorageConfig final : IOConfig { + StorageConfig(const boost::filesystem::path &base) : StorageConfig() + { + IOConfig::UseDefaultOutputNames(base); + } + StorageConfig() : IOConfig({".osrm.ramIndex", ".osrm.fileIndex", diff --git a/include/updater/updater_config.hpp b/include/updater/updater_config.hpp index 1e1df9eda..0939a6637 100644 --- a/include/updater/updater_config.hpp +++ b/include/updater/updater_config.hpp @@ -64,6 +64,11 @@ struct UpdaterConfig final : storage::IOConfig { } + void UseDefaultOutputNames(const boost::filesystem::path &base) + { + IOConfig::UseDefaultOutputNames(base); + } + double log_edge_updates_factor; std::time_t valid_now; diff --git a/src/benchmarks/match.cpp b/src/benchmarks/match.cpp index f6a350bf0..788ab2f0b 100644 --- a/src/benchmarks/match.cpp +++ b/src/benchmarks/match.cpp @@ -30,7 +30,7 @@ int main(int argc, const char *argv[]) try // Configure based on a .osrm base path, and no datasets in shared mem from osrm-datastore EngineConfig config; - config.storage_config.UseDefaultOutputNames(argv[1]); + config.storage_config = {argv[1]}; config.use_shared_memory = false; // Routing machine with several services (such as Route, Table, Nearest, Trip, Match) diff --git a/src/tools/routed.cpp b/src/tools/routed.cpp index 689e575b7..92b01db1b 100644 --- a/src/tools/routed.cpp +++ b/src/tools/routed.cpp @@ -229,7 +229,7 @@ int main(int argc, const char *argv[]) try } if (!base_path.empty()) { - config.storage_config.UseDefaultOutputNames(base_path); + config.storage_config = storage::StorageConfig(base_path); } if (!config.use_shared_memory && !config.storage_config.IsValid()) { diff --git a/src/tools/store.cpp b/src/tools/store.cpp index 2edc6a0ba..d6e639d2d 100644 --- a/src/tools/store.cpp +++ b/src/tools/store.cpp @@ -163,8 +163,7 @@ int main(const int argc, const char *argv[]) try { return EXIT_SUCCESS; } - storage::StorageConfig config; - config.UseDefaultOutputNames(base_path); + storage::StorageConfig config(base_path); if (!config.IsValid()) { util::Log(logERROR) << "Config contains invalid file paths. Exiting!"; diff --git a/unit_tests/library/fixture.hpp b/unit_tests/library/fixture.hpp index 960a3e85c..632c72f15 100644 --- a/unit_tests/library/fixture.hpp +++ b/unit_tests/library/fixture.hpp @@ -14,7 +14,7 @@ getOSRM(const std::string &base_path, osrm::EngineConfig::Algorithm algorithm = osrm::EngineConfig::Algorithm::CH) { osrm::EngineConfig config; - config.storage_config.UseDefaultOutputNames(base_path); + config.storage_config = {base_path}; config.use_shared_memory = false; config.algorithm = algorithm; diff --git a/unit_tests/library/limits.cpp b/unit_tests/library/limits.cpp index 99227de8f..368e6224e 100644 --- a/unit_tests/library/limits.cpp +++ b/unit_tests/library/limits.cpp @@ -28,7 +28,7 @@ BOOST_AUTO_TEST_CASE(test_trip_limits) using namespace osrm; EngineConfig config; - config.storage_config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/ch/monaco.osrm"); + config.storage_config = {OSRM_TEST_DATA_DIR "/ch/monaco.osrm"}; config.use_shared_memory = false; config.max_locations_trip = 2; @@ -55,7 +55,7 @@ BOOST_AUTO_TEST_CASE(test_route_limits) using namespace osrm; EngineConfig config; - config.storage_config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/ch/monaco.osrm"); + config.storage_config = {OSRM_TEST_DATA_DIR "/ch/monaco.osrm"}; config.use_shared_memory = false; config.max_locations_viaroute = 2; @@ -82,7 +82,7 @@ BOOST_AUTO_TEST_CASE(test_table_limits) using namespace osrm; EngineConfig config; - config.storage_config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/ch/monaco.osrm"); + config.storage_config = {OSRM_TEST_DATA_DIR "/ch/monaco.osrm"}; config.use_shared_memory = false; config.max_locations_distance_table = 2; @@ -109,7 +109,7 @@ BOOST_AUTO_TEST_CASE(test_match_limits) using namespace osrm; EngineConfig config; - config.storage_config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/ch/monaco.osrm"); + config.storage_config = {OSRM_TEST_DATA_DIR "/ch/monaco.osrm"}; config.use_shared_memory = false; config.max_locations_map_matching = 2; @@ -136,7 +136,7 @@ BOOST_AUTO_TEST_CASE(test_nearest_limits) using namespace osrm; EngineConfig config; - config.storage_config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/ch/monaco.osrm"); + config.storage_config = {OSRM_TEST_DATA_DIR "/ch/monaco.osrm"}; config.use_shared_memory = false; config.max_results_nearest = 2; diff --git a/unit_tests/library/options.cpp b/unit_tests/library/options.cpp index 34a83d650..584843cf1 100644 --- a/unit_tests/library/options.cpp +++ b/unit_tests/library/options.cpp @@ -14,7 +14,7 @@ BOOST_AUTO_TEST_CASE(test_ch) using namespace osrm; EngineConfig config; config.use_shared_memory = false; - config.storage_config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/ch/monaco.osrm"); + config.storage_config = storage::StorageConfig(OSRM_TEST_DATA_DIR "/ch/monaco.osrm"); config.algorithm = EngineConfig::Algorithm::CH; OSRM osrm{config}; } @@ -24,7 +24,7 @@ BOOST_AUTO_TEST_CASE(test_corech) using namespace osrm; EngineConfig config; config.use_shared_memory = false; - config.storage_config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/corech/monaco.osrm"); + config.storage_config = storage::StorageConfig(OSRM_TEST_DATA_DIR "/corech/monaco.osrm"); config.algorithm = EngineConfig::Algorithm::CoreCH; OSRM osrm{config}; } @@ -34,7 +34,7 @@ BOOST_AUTO_TEST_CASE(test_mld) using namespace osrm; EngineConfig config; config.use_shared_memory = false; - config.storage_config.UseDefaultOutputNames(OSRM_TEST_DATA_DIR "/mld/monaco.osrm"); + config.storage_config = storage::StorageConfig(OSRM_TEST_DATA_DIR "/mld/monaco.osrm"); config.algorithm = EngineConfig::Algorithm::MLD; OSRM osrm{config}; }