fix unpacking of geometry for shared memory
This commit is contained in:
parent
ca016e2818
commit
45f751720a
@ -173,10 +173,6 @@ private:
|
|||||||
sizeof(OriginalEdgeData)
|
sizeof(OriginalEdgeData)
|
||||||
);
|
);
|
||||||
m_via_node_list[i] = current_edge_data.via_node;
|
m_via_node_list[i] = current_edge_data.via_node;
|
||||||
// if(current_edge_data.via_node == 0 && current_edge_data.compressed_geometry) {
|
|
||||||
// SimpleLogger().Write() << "0 at index " << i;
|
|
||||||
// }
|
|
||||||
|
|
||||||
m_name_ID_list[i] = current_edge_data.name_id;
|
m_name_ID_list[i] = current_edge_data.name_id;
|
||||||
m_turn_instruction_list[i] = current_edge_data.turn_instruction;
|
m_turn_instruction_list[i] = current_edge_data.turn_instruction;
|
||||||
m_egde_is_compressed[i] = current_edge_data.compressed_geometry;
|
m_egde_is_compressed[i] = current_edge_data.compressed_geometry;
|
||||||
@ -184,7 +180,6 @@ private:
|
|||||||
++compressed;
|
++compressed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// SimpleLogger().Write(logDEBUG) << "compressed: " << compressed;
|
|
||||||
|
|
||||||
edges_input_stream.close();
|
edges_input_stream.close();
|
||||||
}
|
}
|
||||||
@ -202,6 +197,7 @@ private:
|
|||||||
(char *)&number_of_indices,
|
(char *)&number_of_indices,
|
||||||
sizeof(unsigned)
|
sizeof(unsigned)
|
||||||
);
|
);
|
||||||
|
|
||||||
m_geometry_indices.resize(number_of_indices);
|
m_geometry_indices.resize(number_of_indices);
|
||||||
geometry_stream.read(
|
geometry_stream.read(
|
||||||
(char *)&(m_geometry_indices[0]),
|
(char *)&(m_geometry_indices[0]),
|
||||||
@ -250,8 +246,6 @@ private:
|
|||||||
BOOST_ASSERT_MSG(0 != number_of_names, "name file broken");
|
BOOST_ASSERT_MSG(0 != number_of_names, "name file broken");
|
||||||
BOOST_ASSERT_MSG(0 != number_of_chars, "name file broken");
|
BOOST_ASSERT_MSG(0 != number_of_chars, "name file broken");
|
||||||
|
|
||||||
SimpleLogger().Write(logDEBUG) << "no. of names: " << number_of_names;
|
|
||||||
|
|
||||||
m_name_begin_indices.resize(number_of_names);
|
m_name_begin_indices.resize(number_of_names);
|
||||||
name_stream.read(
|
name_stream.read(
|
||||||
(char*)&m_name_begin_indices[0],
|
(char*)&m_name_begin_indices[0],
|
||||||
|
@ -92,8 +92,6 @@ private:
|
|||||||
>
|
>
|
||||||
> m_static_rtree;
|
> m_static_rtree;
|
||||||
|
|
||||||
// SharedDataFacade() { }
|
|
||||||
|
|
||||||
void LoadTimestamp() {
|
void LoadTimestamp() {
|
||||||
char * timestamp_ptr = shared_memory + data_layout->GetTimeStampOffset();
|
char * timestamp_ptr = shared_memory + data_layout->GetTimeStampOffset();
|
||||||
m_timestamp.resize(data_layout->timestamp_length);
|
m_timestamp.resize(data_layout->timestamp_length);
|
||||||
@ -130,7 +128,7 @@ private:
|
|||||||
);
|
);
|
||||||
|
|
||||||
GraphEdge * graph_edges_ptr = (GraphEdge *)(
|
GraphEdge * graph_edges_ptr = (GraphEdge *)(
|
||||||
shared_memory + data_layout->GetGraphEdgeListOffsett()
|
shared_memory + data_layout->GetGraphEdgeListOffset()
|
||||||
);
|
);
|
||||||
|
|
||||||
typename ShM<GraphNode, true>::vector node_list(
|
typename ShM<GraphNode, true>::vector node_list(
|
||||||
@ -210,16 +208,16 @@ private:
|
|||||||
void LoadGeometries()
|
void LoadGeometries()
|
||||||
{
|
{
|
||||||
unsigned * geometries_compressed_ptr = (unsigned *)(
|
unsigned * geometries_compressed_ptr = (unsigned *)(
|
||||||
shared_memory + data_layout->GetGeometriesIndexListOffset()
|
shared_memory + data_layout->GetGeometriesIndicatorOffset()
|
||||||
);
|
);
|
||||||
typename ShM<bool, true>::vector egde_is_compressed(
|
typename ShM<bool, true>::vector egde_is_compressed(
|
||||||
geometries_compressed_ptr,
|
geometries_compressed_ptr,
|
||||||
data_layout->geometries_index_list_size
|
data_layout->geometries_indicators
|
||||||
);
|
);
|
||||||
m_egde_is_compressed.swap(egde_is_compressed);
|
m_egde_is_compressed.swap(egde_is_compressed);
|
||||||
|
|
||||||
unsigned * geometries_index_ptr = (unsigned *)(
|
unsigned * geometries_index_ptr = (unsigned *)(
|
||||||
shared_memory + data_layout->GetGeometriesIndicatorOffset()
|
shared_memory + data_layout->GetGeometriesIndexListOffset()
|
||||||
);
|
);
|
||||||
typename ShM<unsigned, true>::vector geometry_begin_indices(
|
typename ShM<unsigned, true>::vector geometry_begin_indices(
|
||||||
geometries_index_ptr,
|
geometries_index_ptr,
|
||||||
@ -406,15 +404,6 @@ public:
|
|||||||
resulting_phantom_node,
|
resulting_phantom_node,
|
||||||
zoom_level
|
zoom_level
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( found ) {
|
|
||||||
resulting_phantom_node.name_id = GetNameIndexFromEdgeID(
|
|
||||||
FindEdge(
|
|
||||||
resulting_phantom_node.forward_node_id,
|
|
||||||
resulting_phantom_node.reverse_node_id
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ struct SharedDataLayout {
|
|||||||
uint64_t r_search_tree_size;
|
uint64_t r_search_tree_size;
|
||||||
uint64_t geometries_index_list_size;
|
uint64_t geometries_index_list_size;
|
||||||
uint64_t geometries_list_size;
|
uint64_t geometries_list_size;
|
||||||
uint64_t geometries_compression;
|
uint64_t geometries_indicators;
|
||||||
|
|
||||||
unsigned checksum;
|
unsigned checksum;
|
||||||
unsigned timestamp_length;
|
unsigned timestamp_length;
|
||||||
@ -77,7 +77,7 @@ struct SharedDataLayout {
|
|||||||
r_search_tree_size(0),
|
r_search_tree_size(0),
|
||||||
geometries_index_list_size(0),
|
geometries_index_list_size(0),
|
||||||
geometries_list_size(0),
|
geometries_list_size(0),
|
||||||
geometries_compression(0),
|
geometries_indicators(0),
|
||||||
checksum(0),
|
checksum(0),
|
||||||
timestamp_length(0)
|
timestamp_length(0)
|
||||||
|
|
||||||
@ -87,19 +87,34 @@ struct SharedDataLayout {
|
|||||||
|
|
||||||
void PrintInformation() const {
|
void PrintInformation() const {
|
||||||
SimpleLogger().Write(logDEBUG) << "-";
|
SimpleLogger().Write(logDEBUG) << "-";
|
||||||
|
SimpleLogger().Write(logDEBUG) << "GetSizeOfLayout: " << GetSizeOfLayout();
|
||||||
SimpleLogger().Write(logDEBUG) << "name_index_list_size: " << name_index_list_size;
|
SimpleLogger().Write(logDEBUG) << "name_index_list_size: " << name_index_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetNameIndexOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "name_char_list_size: " << name_char_list_size;
|
SimpleLogger().Write(logDEBUG) << "name_char_list_size: " << name_char_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetNameListOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "name_id_list_size: " << name_id_list_size;
|
SimpleLogger().Write(logDEBUG) << "name_id_list_size: " << name_id_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetNameIDListOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "via_node_list_size: " << via_node_list_size;
|
SimpleLogger().Write(logDEBUG) << "via_node_list_size: " << via_node_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetViaNodeListOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "graph_node_list_size: " << graph_node_list_size;
|
SimpleLogger().Write(logDEBUG) << "graph_node_list_size: " << graph_node_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetGraphNodeListOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "graph_edge_list_size: " << graph_edge_list_size;
|
SimpleLogger().Write(logDEBUG) << "graph_edge_list_size: " << graph_edge_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetGraphEdgeListOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "timestamp_length: " << timestamp_length;
|
SimpleLogger().Write(logDEBUG) << "timestamp_length: " << timestamp_length;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetTimeStampOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "coordinate_list_size: " << coordinate_list_size;
|
SimpleLogger().Write(logDEBUG) << "coordinate_list_size: " << coordinate_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetCoordinateListOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "turn_instruction_list_size: " << turn_instruction_list_size;
|
SimpleLogger().Write(logDEBUG) << "turn_instruction_list_size: " << turn_instruction_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetTurnInstructionListOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "r_search_tree_size: " << r_search_tree_size;
|
SimpleLogger().Write(logDEBUG) << "r_search_tree_size: " << r_search_tree_size;
|
||||||
SimpleLogger().Write(logDEBUG) << "geometries_compression: " << geometries_compression << "/" << ((geometries_compression/32) + 1);
|
SimpleLogger().Write(logDEBUG) << " " << GetRSearchTreeOffset();
|
||||||
|
SimpleLogger().Write(logDEBUG) << "geometries_indicators: " << geometries_indicators << "/" << ((geometries_indicators/8) + 1);
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetGeometriesIndicatorOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "geometries_index_list_size: " << geometries_index_list_size;
|
SimpleLogger().Write(logDEBUG) << "geometries_index_list_size: " << geometries_index_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetGeometriesIndexListOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "geometries_list_size: " << geometries_list_size;
|
SimpleLogger().Write(logDEBUG) << "geometries_list_size: " << geometries_list_size;
|
||||||
|
SimpleLogger().Write(logDEBUG) << " " << GetGeometryListOffset();
|
||||||
|
SimpleLogger().Write(logDEBUG) << "checksum offset: " << GetChecksumOffset();
|
||||||
SimpleLogger().Write(logDEBUG) << "sizeof(checksum): " << sizeof(checksum);
|
SimpleLogger().Write(logDEBUG) << "sizeof(checksum): " << sizeof(checksum);
|
||||||
SimpleLogger().Write(logDEBUG) << "ram index file name: " << ram_index_file_name;
|
SimpleLogger().Write(logDEBUG) << "ram index file name: " << ram_index_file_name;
|
||||||
}
|
}
|
||||||
@ -116,12 +131,11 @@ struct SharedDataLayout {
|
|||||||
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
||||||
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
||||||
(r_search_tree_size * sizeof(RTreeNode) ) +
|
(r_search_tree_size * sizeof(RTreeNode) ) +
|
||||||
(geometries_compression/32 + 1) * sizeof(unsigned) +
|
(geometries_indicators/32 + 1) * sizeof(unsigned) +
|
||||||
(geometries_index_list_size * sizeof(unsigned) ) +
|
(geometries_index_list_size * sizeof(unsigned) ) +
|
||||||
(geometries_list_size * sizeof(unsigned) ) +
|
(geometries_list_size * sizeof(unsigned) ) +
|
||||||
sizeof(checksum) +
|
sizeof(checksum) +
|
||||||
1024*sizeof(char);
|
1024*sizeof(char);
|
||||||
PrintInformation();
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,10 +168,10 @@ struct SharedDataLayout {
|
|||||||
(via_node_list_size * sizeof(NodeID) );
|
(via_node_list_size * sizeof(NodeID) );
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
uint64_t GetGraphEdgeListOffsett() const {
|
uint64_t GetGraphEdgeListOffset() const {
|
||||||
uint64_t result =
|
uint64_t result =
|
||||||
(name_index_list_size * sizeof(unsigned) ) +
|
(name_index_list_size * sizeof(unsigned) ) +
|
||||||
(name_char_list_size * sizeof(char) ) +
|
(name_char_list_size * sizeof(char) ) +
|
||||||
(name_id_list_size * sizeof(unsigned) ) +
|
(name_id_list_size * sizeof(unsigned) ) +
|
||||||
(via_node_list_size * sizeof(NodeID) ) +
|
(via_node_list_size * sizeof(NodeID) ) +
|
||||||
(graph_node_list_size * sizeof(QueryGraph::_StrNode)) ;
|
(graph_node_list_size * sizeof(QueryGraph::_StrNode)) ;
|
||||||
@ -171,7 +185,6 @@ struct SharedDataLayout {
|
|||||||
(via_node_list_size * sizeof(NodeID) ) +
|
(via_node_list_size * sizeof(NodeID) ) +
|
||||||
(graph_node_list_size * sizeof(QueryGraph::_StrNode)) +
|
(graph_node_list_size * sizeof(QueryGraph::_StrNode)) +
|
||||||
(graph_edge_list_size * sizeof(QueryGraph::_StrEdge));
|
(graph_edge_list_size * sizeof(QueryGraph::_StrEdge));
|
||||||
SimpleLogger().Write(logDEBUG) << "GetTimeStampOffset: " << result;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
uint64_t GetCoordinateListOffset() const {
|
uint64_t GetCoordinateListOffset() const {
|
||||||
@ -183,7 +196,6 @@ struct SharedDataLayout {
|
|||||||
(graph_node_list_size * sizeof(QueryGraph::_StrNode)) +
|
(graph_node_list_size * sizeof(QueryGraph::_StrNode)) +
|
||||||
(graph_edge_list_size * sizeof(QueryGraph::_StrEdge)) +
|
(graph_edge_list_size * sizeof(QueryGraph::_StrEdge)) +
|
||||||
(timestamp_length * sizeof(char) );
|
(timestamp_length * sizeof(char) );
|
||||||
SimpleLogger().Write(logDEBUG) << "GetCoordinateListOffset: " << result;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
uint64_t GetTurnInstructionListOffset() const {
|
uint64_t GetTurnInstructionListOffset() const {
|
||||||
@ -196,7 +208,6 @@ struct SharedDataLayout {
|
|||||||
(graph_edge_list_size * sizeof(QueryGraph::_StrEdge)) +
|
(graph_edge_list_size * sizeof(QueryGraph::_StrEdge)) +
|
||||||
(timestamp_length * sizeof(char) ) +
|
(timestamp_length * sizeof(char) ) +
|
||||||
(coordinate_list_size * sizeof(FixedPointCoordinate));
|
(coordinate_list_size * sizeof(FixedPointCoordinate));
|
||||||
SimpleLogger().Write(logDEBUG) << "GetTurnInstructionListOffset: " << result;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
uint64_t GetRSearchTreeOffset() const {
|
uint64_t GetRSearchTreeOffset() const {
|
||||||
@ -210,7 +221,6 @@ struct SharedDataLayout {
|
|||||||
(timestamp_length * sizeof(char) ) +
|
(timestamp_length * sizeof(char) ) +
|
||||||
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
||||||
(turn_instruction_list_size * sizeof(TurnInstructionsClass));
|
(turn_instruction_list_size * sizeof(TurnInstructionsClass));
|
||||||
SimpleLogger().Write(logDEBUG) << "GetRSearchTreeOffset: " << result;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
uint64_t GetGeometriesIndicatorOffset() const {
|
uint64_t GetGeometriesIndicatorOffset() const {
|
||||||
@ -225,13 +235,11 @@ struct SharedDataLayout {
|
|||||||
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
||||||
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
||||||
(r_search_tree_size * sizeof(RTreeNode) );
|
(r_search_tree_size * sizeof(RTreeNode) );
|
||||||
SimpleLogger().Write(logDEBUG) << "GetGeometriesIndicatorOffset: " << result;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t GetGeometriesIndexListOffset() const
|
uint64_t GetGeometriesIndexListOffset() const
|
||||||
{
|
{ uint64_t result =
|
||||||
uint64_t result =
|
|
||||||
(name_index_list_size * sizeof(unsigned) ) +
|
(name_index_list_size * sizeof(unsigned) ) +
|
||||||
(name_char_list_size * sizeof(char) ) +
|
(name_char_list_size * sizeof(char) ) +
|
||||||
(name_id_list_size * sizeof(unsigned) ) +
|
(name_id_list_size * sizeof(unsigned) ) +
|
||||||
@ -242,8 +250,7 @@ struct SharedDataLayout {
|
|||||||
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
||||||
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
||||||
(r_search_tree_size * sizeof(RTreeNode) ) +
|
(r_search_tree_size * sizeof(RTreeNode) ) +
|
||||||
(geometries_compression/32 + 1) * sizeof(unsigned);
|
(geometries_indicators/32 + 1) * sizeof(unsigned);
|
||||||
SimpleLogger().Write(logDEBUG) << "GetGeometriesCompressedOffset: " << result;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,9 +266,8 @@ struct SharedDataLayout {
|
|||||||
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
||||||
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
||||||
(r_search_tree_size * sizeof(RTreeNode) ) +
|
(r_search_tree_size * sizeof(RTreeNode) ) +
|
||||||
(geometries_compression/32 + 1) * sizeof(unsigned) +
|
(geometries_indicators/32 + 1) * sizeof(unsigned) +
|
||||||
(geometries_index_list_size * sizeof(unsigned) );
|
(geometries_index_list_size * sizeof(unsigned) );
|
||||||
SimpleLogger().Write(logDEBUG) << "GetGeometryListOffset: " << result;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
uint64_t GetChecksumOffset() const {
|
uint64_t GetChecksumOffset() const {
|
||||||
@ -276,10 +282,9 @@ struct SharedDataLayout {
|
|||||||
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
(coordinate_list_size * sizeof(FixedPointCoordinate) ) +
|
||||||
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
(turn_instruction_list_size * sizeof(TurnInstructionsClass)) +
|
||||||
(r_search_tree_size * sizeof(RTreeNode) ) +
|
(r_search_tree_size * sizeof(RTreeNode) ) +
|
||||||
(geometries_compression/32 + 1) * sizeof(unsigned) +
|
(geometries_indicators/32 + 1) * sizeof(unsigned) +
|
||||||
(geometries_index_list_size * sizeof(unsigned) ) +
|
(geometries_index_list_size * sizeof(unsigned) ) +
|
||||||
(geometries_list_size * sizeof(unsigned) );
|
(geometries_list_size * sizeof(unsigned) );
|
||||||
SimpleLogger().Write(logDEBUG) << "GetChecksumOffset: " << result;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user