From 4f13208ce8f73d3f497288139d5e7a747822b23d Mon Sep 17 00:00:00 2001 From: Patrick Niklaus Date: Fri, 16 Jun 2017 09:30:37 +0000 Subject: [PATCH] Fix the propfile properties reading/writing --- include/extractor/extractor.hpp | 2 -- include/extractor/files.hpp | 20 ++++++++++++++++++++ include/extractor/serialization.hpp | 12 ++++++++++++ src/extractor/extractor.cpp | 10 +--------- src/storage/storage.cpp | 5 +---- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/include/extractor/extractor.hpp b/include/extractor/extractor.hpp index 840ea5bf0..af0a7500c 100644 --- a/include/extractor/extractor.hpp +++ b/include/extractor/extractor.hpp @@ -70,8 +70,6 @@ class Extractor util::DeallocatingVector &edge_based_edge_list, const std::string &intersection_class_output_file, std::vector &turn_restrictions); - void WriteProfileProperties(const std::string &output_path, - const ProfileProperties &properties) const; void FindComponents(unsigned max_edge_id, const util::DeallocatingVector &input_edge_list, const std::vector &input_node_segments, diff --git a/include/extractor/files.hpp b/include/extractor/files.hpp index 93a319e32..6042e455f 100644 --- a/include/extractor/files.hpp +++ b/include/extractor/files.hpp @@ -6,6 +6,7 @@ #include "extractor/node_data_container.hpp" #include "extractor/serialization.hpp" #include "extractor/turn_data_container.hpp" +#include "extractor/profile_properties.hpp" #include "util/coordinate.hpp" #include "util/packed_vector.hpp" @@ -20,6 +21,25 @@ namespace extractor namespace files { +// reads .osrm.properties +inline void readProfileProperties(const boost::filesystem::path &path, ProfileProperties &properties) +{ + const auto fingerprint = storage::io::FileReader::VerifyFingerprint; + storage::io::FileReader reader{path, fingerprint}; + + serialization::read(reader, properties); +} + +// writes .osrm.properties +inline void writeProfileProperties(const boost::filesystem::path &path, + const ProfileProperties &properties) +{ + const auto fingerprint = storage::io::FileWriter::GenerateFingerprint; + storage::io::FileWriter writer{path, fingerprint}; + + serialization::write(writer, properties); +} + template void writeEdgeBasedGraph(const boost::filesystem::path &path, EdgeID const max_edge_id, diff --git a/include/extractor/serialization.hpp b/include/extractor/serialization.hpp index 49211e9e0..0a726a4ed 100644 --- a/include/extractor/serialization.hpp +++ b/include/extractor/serialization.hpp @@ -7,6 +7,7 @@ #include "extractor/restriction.hpp" #include "extractor/segment_data_container.hpp" #include "extractor/turn_data_container.hpp" +#include "extractor/profile_properties.hpp" #include "storage/io.hpp" #include "storage/serialization.hpp" @@ -20,6 +21,17 @@ namespace extractor namespace serialization { +// read/write for properties file +inline void read(storage::io::FileReader &reader, ProfileProperties &properties) +{ + reader.ReadInto(properties); +} + +inline void write(storage::io::FileWriter &writer, const ProfileProperties &properties) +{ + writer.WriteFrom(properties); +} + // read/write for datasources file inline void read(storage::io::FileReader &reader, Datasources &sources) { diff --git a/src/extractor/extractor.cpp b/src/extractor/extractor.cpp index 49121d803..16ec00331 100644 --- a/src/extractor/extractor.cpp +++ b/src/extractor/extractor.cpp @@ -347,7 +347,7 @@ std::vector Extractor::ParseOSMData(ScriptingEnvironment &scrip config.restriction_file_name, config.names_file_name); - WriteProfileProperties(config.profile_properties_output_path, + files::writeProfileProperties(config.profile_properties_output_path, scripting_environment.GetProfileProperties()); TIMER_STOP(extracting); @@ -356,14 +356,6 @@ std::vector Extractor::ParseOSMData(ScriptingEnvironment &scrip return extraction_containers.unconditional_turn_restrictions; } -void Extractor::WriteProfileProperties(const std::string &output_path, - const ProfileProperties &properties) const -{ - storage::io::FileWriter file(output_path, storage::io::FileWriter::GenerateFingerprint); - - file.WriteOne(properties); -} - void Extractor::FindComponents(unsigned max_edge_id, const util::DeallocatingVector &input_edge_list, const std::vector &input_node_segments, diff --git a/src/storage/storage.cpp b/src/storage/storage.cpp index cf364af1a..4256ff530 100644 --- a/src/storage/storage.cpp +++ b/src/storage/storage.cpp @@ -819,12 +819,9 @@ void Storage::PopulateData(const DataLayout &layout, char *memory_ptr) // load profile properties { - io::FileReader profile_properties_file(config.properties_path, - io::FileReader::VerifyFingerprint); const auto profile_properties_ptr = layout.GetBlockPtr( memory_ptr, DataLayout::PROPERTIES); - profile_properties_file.ReadInto(profile_properties_ptr, - layout.num_entries[DataLayout::PROPERTIES]); + extractor::files::readProfileProperties(config.properties_path, *profile_properties_ptr); } // Load intersection data