Remove ownership of block pointers from base class.
This commit is contained in:
parent
02303904b8
commit
6949d7ee5b
@ -50,10 +50,6 @@ namespace datafacade
|
|||||||
*/
|
*/
|
||||||
class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
storage::DataLayout *data_layout;
|
|
||||||
char *memory_block;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
using super = BaseDataFacade;
|
using super = BaseDataFacade;
|
||||||
using QueryGraph = util::StaticGraph<EdgeData, true>;
|
using QueryGraph = util::StaticGraph<EdgeData, true>;
|
||||||
@ -115,20 +111,20 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
std::shared_ptr<util::RangeTable<16, true>> m_bearing_ranges_table;
|
std::shared_ptr<util::RangeTable<16, true>> m_bearing_ranges_table;
|
||||||
util::ShM<DiscreteBearing, true>::vector m_bearing_values_table;
|
util::ShM<DiscreteBearing, true>::vector m_bearing_values_table;
|
||||||
|
|
||||||
void InitChecksum()
|
void InitChecksum(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
m_check_sum =
|
m_check_sum =
|
||||||
*data_layout->GetBlockPtr<unsigned>(memory_block, storage::DataLayout::HSGR_CHECKSUM);
|
*data_layout->GetBlockPtr<unsigned>(memory_block, storage::DataLayout::HSGR_CHECKSUM);
|
||||||
util::SimpleLogger().Write() << "set checksum: " << m_check_sum;
|
util::SimpleLogger().Write() << "set checksum: " << m_check_sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitProfileProperties()
|
void InitProfileProperties(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
m_profile_properties = data_layout->GetBlockPtr<extractor::ProfileProperties>(
|
m_profile_properties = data_layout->GetBlockPtr<extractor::ProfileProperties>(
|
||||||
memory_block, storage::DataLayout::PROPERTIES);
|
memory_block, storage::DataLayout::PROPERTIES);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitTimestamp()
|
void InitTimestamp(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
auto timestamp_ptr =
|
auto timestamp_ptr =
|
||||||
data_layout->GetBlockPtr<char>(memory_block, storage::DataLayout::TIMESTAMP);
|
data_layout->GetBlockPtr<char>(memory_block, storage::DataLayout::TIMESTAMP);
|
||||||
@ -138,7 +134,7 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
m_timestamp.begin());
|
m_timestamp.begin());
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitRTree()
|
void InitRTree(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT_MSG(!m_coordinate_list.empty(), "coordinates must be loaded before r-tree");
|
BOOST_ASSERT_MSG(!m_coordinate_list.empty(), "coordinates must be loaded before r-tree");
|
||||||
|
|
||||||
@ -163,7 +159,7 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
new SharedGeospatialQuery(*m_static_rtree, m_coordinate_list, *this));
|
new SharedGeospatialQuery(*m_static_rtree, m_coordinate_list, *this));
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitGraph()
|
void InitGraph(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
auto graph_nodes_ptr =
|
auto graph_nodes_ptr =
|
||||||
data_layout->GetBlockPtr<GraphNode>(memory_block, storage::DataLayout::GRAPH_NODE_LIST);
|
data_layout->GetBlockPtr<GraphNode>(memory_block, storage::DataLayout::GRAPH_NODE_LIST);
|
||||||
@ -178,7 +174,7 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
m_query_graph.reset(new QueryGraph(node_list, edge_list));
|
m_query_graph.reset(new QueryGraph(node_list, edge_list));
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitNodeAndEdgeInformation()
|
void InitNodeAndEdgeInformation(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
const auto coordinate_list_ptr = data_layout->GetBlockPtr<util::Coordinate>(
|
const auto coordinate_list_ptr = data_layout->GetBlockPtr<util::Coordinate>(
|
||||||
memory_block, storage::DataLayout::COORDINATE_LIST);
|
memory_block, storage::DataLayout::COORDINATE_LIST);
|
||||||
@ -251,7 +247,7 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
m_post_turn_bearing = std::move(post_turn_bearing);
|
m_post_turn_bearing = std::move(post_turn_bearing);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitViaNodeList()
|
void InitViaNodeList(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
auto via_geometry_list_ptr =
|
auto via_geometry_list_ptr =
|
||||||
data_layout->GetBlockPtr<GeometryID>(memory_block, storage::DataLayout::VIA_NODE_LIST);
|
data_layout->GetBlockPtr<GeometryID>(memory_block, storage::DataLayout::VIA_NODE_LIST);
|
||||||
@ -260,7 +256,7 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
m_via_geometry_list = std::move(via_geometry_list);
|
m_via_geometry_list = std::move(via_geometry_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitNames()
|
void InitNames(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
auto offsets_ptr =
|
auto offsets_ptr =
|
||||||
data_layout->GetBlockPtr<unsigned>(memory_block, storage::DataLayout::NAME_OFFSETS);
|
data_layout->GetBlockPtr<unsigned>(memory_block, storage::DataLayout::NAME_OFFSETS);
|
||||||
@ -281,7 +277,7 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
m_names_char_list = std::move(names_char_list);
|
m_names_char_list = std::move(names_char_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitTurnLaneDescriptions()
|
void InitTurnLaneDescriptions(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
auto offsets_ptr = data_layout->GetBlockPtr<std::uint32_t>(
|
auto offsets_ptr = data_layout->GetBlockPtr<std::uint32_t>(
|
||||||
memory_block, storage::DataLayout::LANE_DESCRIPTION_OFFSETS);
|
memory_block, storage::DataLayout::LANE_DESCRIPTION_OFFSETS);
|
||||||
@ -297,7 +293,7 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
m_lane_description_masks = std::move(masks);
|
m_lane_description_masks = std::move(masks);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitCoreInformation()
|
void InitCoreInformation(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
auto core_marker_ptr =
|
auto core_marker_ptr =
|
||||||
data_layout->GetBlockPtr<unsigned>(memory_block, storage::DataLayout::CORE_MARKER);
|
data_layout->GetBlockPtr<unsigned>(memory_block, storage::DataLayout::CORE_MARKER);
|
||||||
@ -306,7 +302,7 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
m_is_core_node = std::move(is_core_node);
|
m_is_core_node = std::move(is_core_node);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitGeometries()
|
void InitGeometries(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
auto geometries_index_ptr =
|
auto geometries_index_ptr =
|
||||||
data_layout->GetBlockPtr<unsigned>(memory_block, storage::DataLayout::GEOMETRIES_INDEX);
|
data_layout->GetBlockPtr<unsigned>(memory_block, storage::DataLayout::GEOMETRIES_INDEX);
|
||||||
@ -363,7 +359,7 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
m_datasource_name_lengths = std::move(datasource_name_lengths);
|
m_datasource_name_lengths = std::move(datasource_name_lengths);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitIntersectionClasses()
|
void InitIntersectionClasses(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
auto bearing_class_id_ptr = data_layout->GetBlockPtr<BearingClassID>(
|
auto bearing_class_id_ptr = data_layout->GetBlockPtr<BearingClassID>(
|
||||||
memory_block, storage::DataLayout::BEARING_CLASSID);
|
memory_block, storage::DataLayout::BEARING_CLASSID);
|
||||||
@ -397,20 +393,20 @@ class BigRAMBlockDataFacadeBase : public BaseDataFacade
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Init()
|
void Init(storage::DataLayout *data_layout, char *memory_block)
|
||||||
{
|
{
|
||||||
InitGraph();
|
InitGraph(data_layout, memory_block);
|
||||||
InitChecksum();
|
InitChecksum(data_layout, memory_block);
|
||||||
InitNodeAndEdgeInformation();
|
InitNodeAndEdgeInformation(data_layout, memory_block);
|
||||||
InitGeometries();
|
InitGeometries(data_layout, memory_block);
|
||||||
InitTimestamp();
|
InitTimestamp(data_layout, memory_block);
|
||||||
InitViaNodeList();
|
InitViaNodeList(data_layout, memory_block);
|
||||||
InitNames();
|
InitNames(data_layout, memory_block);
|
||||||
InitTurnLaneDescriptions();
|
InitTurnLaneDescriptions(data_layout, memory_block);
|
||||||
InitCoreInformation();
|
InitCoreInformation(data_layout, memory_block);
|
||||||
InitProfileProperties();
|
InitProfileProperties(data_layout, memory_block);
|
||||||
InitRTree();
|
InitRTree(data_layout, memory_block);
|
||||||
InitIntersectionClasses();
|
InitIntersectionClasses(data_layout, memory_block);
|
||||||
}
|
}
|
||||||
|
|
||||||
// search graph access
|
// search graph access
|
||||||
|
@ -41,12 +41,8 @@ class InternalDataFacade final : public BigRAMBlockDataFacadeBase
|
|||||||
internal_memory.reset(new char[internal_layout->GetSizeOfLayout()]);
|
internal_memory.reset(new char[internal_layout->GetSizeOfLayout()]);
|
||||||
storage.LoadData(internal_layout.get(), internal_memory.get());
|
storage.LoadData(internal_layout.get(), internal_memory.get());
|
||||||
|
|
||||||
// Set the common base-class pointers
|
|
||||||
data_layout = internal_layout.get();
|
|
||||||
memory_block = internal_memory.get();
|
|
||||||
|
|
||||||
// Adjust all the private m_* members to point to the right places
|
// Adjust all the private m_* members to point to the right places
|
||||||
Init();
|
Init(internal_layout.get(), internal_memory.get());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -80,12 +80,11 @@ class SharedDataFacade : public BigRAMBlockDataFacadeBase
|
|||||||
BOOST_ASSERT(storage::SharedMemory::RegionExists(layout_region));
|
BOOST_ASSERT(storage::SharedMemory::RegionExists(layout_region));
|
||||||
m_layout_memory = storage::makeSharedMemory(layout_region);
|
m_layout_memory = storage::makeSharedMemory(layout_region);
|
||||||
|
|
||||||
data_layout = static_cast<storage::DataLayout *>(m_layout_memory->Ptr());
|
|
||||||
|
|
||||||
BOOST_ASSERT(storage::SharedMemory::RegionExists(data_region));
|
BOOST_ASSERT(storage::SharedMemory::RegionExists(data_region));
|
||||||
m_large_memory = storage::makeSharedMemory(data_region);
|
m_large_memory = storage::makeSharedMemory(data_region);
|
||||||
memory_block = (char *)(m_large_memory->Ptr());
|
|
||||||
Init();
|
Init(static_cast<storage::DataLayout *>(m_layout_memory->Ptr()),
|
||||||
|
static_cast<char *>(m_large_memory->Ptr()));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user