From df0ee955e8da97cbd087869cb5fb4e0630e62606 Mon Sep 17 00:00:00 2001 From: Pepijn Schoen Date: Fri, 7 Apr 2017 11:02:02 +0200 Subject: [PATCH] Fingerprint and move .levels --- include/contractor/files.hpp | 20 ++++++++++++++++++++ src/contractor/contractor.cpp | 12 ++---------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/include/contractor/files.hpp b/include/contractor/files.hpp index 55eba978c..ef19b126b 100644 --- a/include/contractor/files.hpp +++ b/include/contractor/files.hpp @@ -6,6 +6,7 @@ #include "util/serialization.hpp" #include "storage/io.hpp" +#include "storage/serialization.hpp" namespace osrm { @@ -43,6 +44,25 @@ writeGraph(const boost::filesystem::path &path, unsigned checksum, const QueryGr writer.WriteOne(checksum); util::serialization::write(writer, graph); } + +// reads .levels file +inline void readLevels(const boost::filesystem::path &path, std::vector &node_levels) +{ + const auto fingerprint = storage::io::FileReader::VerifyFingerprint; + storage::io::FileReader reader{path, fingerprint}; + + storage::serialization::read(reader, node_levels); +} + +// writes .levels file +inline void writeLevels(const boost::filesystem::path &path, const std::vector &node_levels) +{ + const auto fingerprint = storage::io::FileWriter::GenerateFingerprint; + storage::io::FileWriter writer{path, fingerprint}; + + storage::serialization::write(writer, node_levels); +} + } } } diff --git a/src/contractor/contractor.cpp b/src/contractor/contractor.cpp index 3d9f41a86..c8d3dbaf6 100644 --- a/src/contractor/contractor.cpp +++ b/src/contractor/contractor.cpp @@ -103,22 +103,14 @@ int Contractor::Run() void Contractor::ReadNodeLevels(std::vector &node_levels) const { - storage::io::FileReader order_file(config.level_output_path, - storage::io::FileReader::HasNoFingerprint); - - const auto level_size = order_file.ReadElementCount32(); - node_levels.resize(level_size); - order_file.ReadInto(node_levels); + files::readLevels(config.level_output_path, node_levels); } void Contractor::WriteNodeLevels(std::vector &&in_node_levels) const { std::vector node_levels(std::move(in_node_levels)); - storage::io::FileWriter writer(config.level_output_path, - storage::io::FileWriter::HasNoFingerprint); - - storage::serialization::write(writer, node_levels); + files::writeLevels(config.level_output_path, node_levels); } void Contractor::WriteCoreNodeMarker(std::vector &&in_is_core_node) const