Port cell metrics to tar files

This commit is contained in:
Patrick Niklaus
2018-03-15 16:34:16 +00:00
parent 6a09d2aa9b
commit fed77c4066
3 changed files with 41 additions and 70 deletions
+12 -9
View File
@@ -3,7 +3,7 @@
#include "customizer/serialization.hpp"
#include "storage/io.hpp"
#include "storage/tar.hpp"
#include "util/integer_range.hpp"
@@ -22,15 +22,16 @@ inline void readCellMetrics(const boost::filesystem::path &path, std::vector<Cel
std::is_same<CellMetric, CellMetricT>::value,
"");
const auto fingerprint = storage::io::FileReader::VerifyFingerprint;
storage::io::FileReader reader{path, fingerprint};
const auto fingerprint = storage::tar::FileReader::VerifyFingerprint;
storage::tar::FileReader reader{path, fingerprint};
auto num_metrics = reader.ReadElementCount64();
auto num_metrics = reader.ReadElementCount64("/mld/metrics");
metrics.resize(num_metrics);
auto id = 0;
for (auto &metric : metrics)
{
serialization::read(reader, metric);
serialization::read(reader, "/mld/metrics/" + std::to_string(id++), metric);
}
}
@@ -43,13 +44,15 @@ inline void writeCellMetrics(const boost::filesystem::path &path,
std::is_same<CellMetric, CellMetricT>::value,
"");
const auto fingerprint = storage::io::FileWriter::GenerateFingerprint;
storage::io::FileWriter writer{path, fingerprint};
const auto fingerprint = storage::tar::FileWriter::GenerateFingerprint;
storage::tar::FileWriter writer{path, fingerprint};
writer.WriteElementCount64(metrics.size());
writer.WriteElementCount64("/mld/metrics", metrics.size());
auto id = 0;
for (const auto &metric : metrics)
{
serialization::write(writer, metric);
serialization::write(writer, "/mld/metrics/" + std::to_string(id++), metric);
}
}
}
+11 -7
View File
@@ -3,9 +3,9 @@
#include "partitioner/cell_storage.hpp"
#include "storage/io.hpp"
#include "storage/serialization.hpp"
#include "storage/shared_memory_ownership.hpp"
#include "storage/tar.hpp"
namespace osrm
{
@@ -15,17 +15,21 @@ namespace serialization
{
template <storage::Ownership Ownership>
inline void read(storage::io::FileReader &reader, detail::CellMetricImpl<Ownership> &metric)
inline void read(storage::tar::FileReader &reader,
const std::string &name,
detail::CellMetricImpl<Ownership> &metric)
{
storage::serialization::read(reader, metric.weights);
storage::serialization::read(reader, metric.durations);
storage::serialization::read(reader, name + "/weights", metric.weights);
storage::serialization::read(reader, name + "/durations", metric.durations);
}
template <storage::Ownership Ownership>
inline void write(storage::io::FileWriter &writer, const detail::CellMetricImpl<Ownership> &metric)
inline void write(storage::tar::FileWriter &writer,
const std::string &name,
const detail::CellMetricImpl<Ownership> &metric)
{
storage::serialization::write(writer, metric.weights);
storage::serialization::write(writer, metric.durations);
storage::serialization::write(writer, name + "/weights", metric.weights);
storage::serialization::write(writer, name + "/durations", metric.durations);
}
}
}