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,
detail::SegmentDataContainerImpl<Ownership> &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 <storage::Ownership Ownership>
inline void write(storage::io::FileWriter &writer,
const detail::SegmentDataContainerImpl<Ownership> &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 <storage::Ownership Ownership>

View File

@ -88,7 +88,7 @@ template <typename DataT> 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) + ".");
}
}

View File

@ -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<unsigned>();
layout.SetBlockSize<unsigned>(DataLayout::GEOMETRIES_INDEX, number_of_geometries_indices);
geometry_file.Skip<unsigned>(number_of_geometries_indices);
const auto number_of_compressed_geometries = geometry_file.ReadElementCount32();
const auto number_of_compressed_geometries = reader.ReadVectorSize<NodeID>();
layout.SetBlockSize<NodeID>(DataLayout::GEOMETRIES_NODE_LIST,
number_of_compressed_geometries);
layout.SetBlockSize<EdgeWeight>(DataLayout::GEOMETRIES_FWD_WEIGHT_LIST,