Change serialisation of .geometries file.

This commit is contained in:
Patrick Niklaus 2017-04-02 13:54:53 +00:00 committed by Patrick Niklaus
parent 3f5fc1e897
commit 99a87b4c83
3 changed files with 18 additions and 39 deletions

View File

@ -41,45 +41,26 @@ template <storage::Ownership Ownership>
inline void read(storage::io::FileReader &reader, inline void read(storage::io::FileReader &reader,
detail::SegmentDataContainerImpl<Ownership> &segment_data) detail::SegmentDataContainerImpl<Ownership> &segment_data)
{ {
auto num_indices = reader.ReadElementCount32(); reader.DeserializeVector(segment_data.index);
segment_data.index.resize(num_indices); reader.DeserializeVector(segment_data.nodes);
reader.ReadInto(segment_data.index.data(), num_indices); reader.DeserializeVector(segment_data.fwd_weights);
reader.DeserializeVector(segment_data.rev_weights);
auto num_entries = reader.ReadElementCount32(); reader.DeserializeVector(segment_data.fwd_durations);
segment_data.nodes.resize(num_entries); reader.DeserializeVector(segment_data.rev_durations);
segment_data.fwd_weights.resize(num_entries); reader.DeserializeVector(segment_data.datasources);
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);
} }
template <storage::Ownership Ownership> template <storage::Ownership Ownership>
inline void write(storage::io::FileWriter &writer, inline void write(storage::io::FileWriter &writer,
const detail::SegmentDataContainerImpl<Ownership> &segment_data) const detail::SegmentDataContainerImpl<Ownership> &segment_data)
{ {
writer.WriteElementCount32(segment_data.index.size()); writer.SerializeVector(segment_data.index);
writer.WriteFrom(segment_data.index); writer.SerializeVector(segment_data.nodes);
writer.SerializeVector(segment_data.fwd_weights);
writer.WriteElementCount32(segment_data.nodes.size()); writer.SerializeVector(segment_data.rev_weights);
BOOST_ASSERT(segment_data.fwd_weights.size() == segment_data.nodes.size()); writer.SerializeVector(segment_data.fwd_durations);
BOOST_ASSERT(segment_data.rev_weights.size() == segment_data.nodes.size()); writer.SerializeVector(segment_data.rev_durations);
BOOST_ASSERT(segment_data.fwd_durations.size() == segment_data.nodes.size()); writer.SerializeVector(segment_data.datasources);
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);
} }
template <storage::Ownership Ownership> template <storage::Ownership Ownership>

View File

@ -88,7 +88,7 @@ template <typename DataT> class vector_view
{ {
if (m_size != size) 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) + ".");
} }
} }

View File

@ -324,14 +324,12 @@ void Storage::PopulateLayout(DataLayout &layout)
// load geometries sizes // 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<unsigned>();
layout.SetBlockSize<unsigned>(DataLayout::GEOMETRIES_INDEX, number_of_geometries_indices); layout.SetBlockSize<unsigned>(DataLayout::GEOMETRIES_INDEX, number_of_geometries_indices);
geometry_file.Skip<unsigned>(number_of_geometries_indices); const auto number_of_compressed_geometries = reader.ReadVectorSize<NodeID>();
const auto number_of_compressed_geometries = geometry_file.ReadElementCount32();
layout.SetBlockSize<NodeID>(DataLayout::GEOMETRIES_NODE_LIST, layout.SetBlockSize<NodeID>(DataLayout::GEOMETRIES_NODE_LIST,
number_of_compressed_geometries); number_of_compressed_geometries);
layout.SetBlockSize<EdgeWeight>(DataLayout::GEOMETRIES_FWD_WEIGHT_LIST, layout.SetBlockSize<EdgeWeight>(DataLayout::GEOMETRIES_FWD_WEIGHT_LIST,