Change serialisation of .geometries file.
This commit is contained in:
parent
3f5fc1e897
commit
99a87b4c83
@ -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>
|
||||||
|
@ -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) + ".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user