Swtich EBG to tar file

This commit is contained in:
Patrick Niklaus
2018-03-17 01:37:02 +00:00
parent c61198b26b
commit cf5f6be472
5 changed files with 52 additions and 11 deletions
+10 -8
View File
@@ -83,11 +83,13 @@ void writeEdgeBasedGraph(const boost::filesystem::path &path,
{
static_assert(std::is_same<typename EdgeBasedEdgeVector::value_type, EdgeBasedEdge>::value, "");
storage::io::FileWriter writer(path, storage::io::FileWriter::GenerateFingerprint);
storage::tar::FileWriter writer(path, storage::tar::FileWriter::GenerateFingerprint);
writer.WriteElementCount64(number_of_edge_based_nodes);
storage::serialization::write(writer, edge_based_edge_list);
writer.WriteOne(connectivity_checksum);
writer.WriteElementCount64("/common/number_of_edge_based_nodes", 1);
writer.WriteOne("/common/number_of_edge_based_nodes", number_of_edge_based_nodes);
storage::serialization::write(writer, "/common/edge_based_edge_list", edge_based_edge_list);
writer.WriteElementCount64("/common/connectivity_checksum", 1);
writer.WriteOne("/common/connectivity_checksum", connectivity_checksum);
}
template <typename EdgeBasedEdgeVector>
@@ -98,11 +100,11 @@ void readEdgeBasedGraph(const boost::filesystem::path &path,
{
static_assert(std::is_same<typename EdgeBasedEdgeVector::value_type, EdgeBasedEdge>::value, "");
storage::io::FileReader reader(path, storage::io::FileReader::VerifyFingerprint);
storage::tar::FileReader reader(path, storage::tar::FileReader::VerifyFingerprint);
number_of_edge_based_nodes = reader.ReadElementCount64();
storage::serialization::read(reader, edge_based_edge_list);
reader.ReadInto(connectivity_checksum);
number_of_edge_based_nodes = reader.ReadOne<EdgeID>("/common/number_of_edge_based_nodes");
storage::serialization::read(reader, "/common/edge_based_edge_list", edge_based_edge_list);
connectivity_checksum = reader.ReadOne<std::uint32_t>("/common/connectivity_checksum");
}
// reads .osrm.nodes
+14
View File
@@ -67,6 +67,20 @@ inline void write(storage::io::FileWriter &writer, const util::DeallocatingVecto
writer.WriteFrom(vec.bucket_list.back(), last_block_size);
}
template <typename T>
inline void read(storage::tar::FileReader &reader, const std::string& name, util::DeallocatingVector<T> &vec)
{
vec.resize(reader.ReadElementCount64(name));
reader.ReadStreaming<T>(name, vec.begin(), vec.size());
}
template <typename T>
inline void write(storage::tar::FileWriter &writer, const std::string& name, const util::DeallocatingVector<T> &vec)
{
writer.WriteElementCount64(name, vec.size());
writer.WriteStreaming<T>(name, vec.begin(), vec.size());
}
#if USE_STXXL_LIBRARY
template <typename T> inline void read(storage::io::FileReader &reader, stxxl::vector<T> &vec)
{
+8
View File
@@ -228,6 +228,14 @@ template <typename ElementT> class DeallocatingVector
return *this;
}
DeallocatingVector(std::initializer_list<ElementT> elements)
{
for (auto && elem : elements)
{
emplace_back(std::move(elem));
}
}
~DeallocatingVector() { clear(); }
friend void swap<>(DeallocatingVector<ElementT> &lhs, DeallocatingVector<ElementT> &rhs);