diff --git a/include/extractor/seralization.hpp b/include/extractor/seralization.hpp index 7b0f4c260..0a63fe63d 100644 --- a/include/extractor/seralization.hpp +++ b/include/extractor/seralization.hpp @@ -41,45 +41,26 @@ template inline void read(storage::io::FileReader &reader, detail::SegmentDataContainerImpl &segment_data) { - auto num_indices = reader.ReadElementCount32(); - segment_data.index.resize(num_indices); - reader.ReadInto(segment_data.index.data(), num_indices); - - auto num_entries = reader.ReadElementCount32(); - segment_data.nodes.resize(num_entries); - segment_data.fwd_weights.resize(num_entries); - segment_data.rev_weights.resize(num_entries); - segment_data.fwd_durations.resize(num_entries); - segment_data.rev_durations.resize(num_entries); - segment_data.datasources.resize(num_entries); - - reader.ReadInto(segment_data.nodes); - reader.ReadInto(segment_data.fwd_weights); - reader.ReadInto(segment_data.rev_weights); - reader.ReadInto(segment_data.fwd_durations); - reader.ReadInto(segment_data.rev_durations); - reader.ReadInto(segment_data.datasources); + reader.DeserializeVector(segment_data.index); + reader.DeserializeVector(segment_data.nodes); + reader.DeserializeVector(segment_data.fwd_weights); + reader.DeserializeVector(segment_data.rev_weights); + reader.DeserializeVector(segment_data.fwd_durations); + reader.DeserializeVector(segment_data.rev_durations); + reader.DeserializeVector(segment_data.datasources); } template inline void write(storage::io::FileWriter &writer, const detail::SegmentDataContainerImpl &segment_data) { - writer.WriteElementCount32(segment_data.index.size()); - writer.WriteFrom(segment_data.index); - - writer.WriteElementCount32(segment_data.nodes.size()); - BOOST_ASSERT(segment_data.fwd_weights.size() == segment_data.nodes.size()); - BOOST_ASSERT(segment_data.rev_weights.size() == segment_data.nodes.size()); - BOOST_ASSERT(segment_data.fwd_durations.size() == segment_data.nodes.size()); - BOOST_ASSERT(segment_data.rev_durations.size() == segment_data.nodes.size()); - BOOST_ASSERT(segment_data.datasources.size() == segment_data.nodes.size()); - writer.WriteFrom(segment_data.nodes); - writer.WriteFrom(segment_data.fwd_weights); - writer.WriteFrom(segment_data.rev_weights); - writer.WriteFrom(segment_data.fwd_durations); - writer.WriteFrom(segment_data.rev_durations); - writer.WriteFrom(segment_data.datasources); + writer.SerializeVector(segment_data.index); + writer.SerializeVector(segment_data.nodes); + writer.SerializeVector(segment_data.fwd_weights); + writer.SerializeVector(segment_data.rev_weights); + writer.SerializeVector(segment_data.fwd_durations); + writer.SerializeVector(segment_data.rev_durations); + writer.SerializeVector(segment_data.datasources); } template diff --git a/include/util/shared_memory_vector_wrapper.hpp b/include/util/shared_memory_vector_wrapper.hpp index 701d72f90..3c361aa63 100644 --- a/include/util/shared_memory_vector_wrapper.hpp +++ b/include/util/shared_memory_vector_wrapper.hpp @@ -88,7 +88,7 @@ template class vector_view { if (m_size != size) { - throw util::exception("Invalid resize on immutable shared memory vector."); + throw util::exception("Invalid resize " + std::to_string(size) + " on immutable vector view of size " + std::to_string(m_size) + "."); } } diff --git a/src/storage/storage.cpp b/src/storage/storage.cpp index e5863f5ce..711b94a19 100644 --- a/src/storage/storage.cpp +++ b/src/storage/storage.cpp @@ -324,14 +324,12 @@ void Storage::PopulateLayout(DataLayout &layout) // load geometries sizes { - io::FileReader geometry_file(config.geometries_path, io::FileReader::HasNoFingerprint); + io::FileReader reader(config.geometries_path, io::FileReader::HasNoFingerprint); - const auto number_of_geometries_indices = geometry_file.ReadElementCount32(); + const auto number_of_geometries_indices = reader.ReadVectorSize(); layout.SetBlockSize(DataLayout::GEOMETRIES_INDEX, number_of_geometries_indices); - geometry_file.Skip(number_of_geometries_indices); - - const auto number_of_compressed_geometries = geometry_file.ReadElementCount32(); + const auto number_of_compressed_geometries = reader.ReadVectorSize(); layout.SetBlockSize(DataLayout::GEOMETRIES_NODE_LIST, number_of_compressed_geometries); layout.SetBlockSize(DataLayout::GEOMETRIES_FWD_WEIGHT_LIST,