MCPcopy Create free account
hub / github.com/comaps/comaps / Do

Method Do

libs/map/transit/transit_reader.cpp:69–188  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

67}
68
69void ReadTransitTask::Do()
70{
71 MwmSet::MwmHandle handle = m_dataSource.GetMwmHandleById(m_mwmId);
72 if (!handle.IsAlive())
73 {
74 // It's possible that mwm handle is not alive because mwm may be removed after
75 // transit route is built but before this task is executed.
76 LOG(LWARNING, ("Can't get mwm handle for", m_mwmId));
77 m_success = false;
78 return;
79 }
80 MwmValue const & mwmValue = *handle.GetValue();
81 if (!m_loadSubset && !mwmValue.m_cont.IsExist(TRANSIT_FILE_TAG))
82 {
83 m_success = true;
84 return;
85 }
86 CHECK(mwmValue.m_cont.IsExist(TRANSIT_FILE_TAG),
87 ("No transit section in mwm, but transit route was built with it. mwmId:", m_mwmId));
88
89 auto reader = mwmValue.m_cont.GetReader(TRANSIT_FILE_TAG);
90 CHECK(reader.GetPtr() != nullptr, ());
91
92 auto const transitHeaderVersion = ::transit::GetVersion(*reader.GetPtr());
93 if (transitHeaderVersion == ::transit::TransitVersion::OnlySubway)
94 {
95 m_transitInfo->m_transitVersion = ::transit::TransitVersion::OnlySubway;
96
97 routing::transit::GraphData graphData;
98 graphData.DeserializeForRendering(*reader.GetPtr());
99
100 FillItemsByIdMap(graphData.GetStops(), m_transitInfo->m_stopsSubway);
101 for (auto const & stop : m_transitInfo->m_stopsSubway)
102 {
103 if (stop.second.GetFeatureId() != kInvalidFeatureId)
104 {
105 auto const featureId = FeatureID(m_mwmId, stop.second.GetFeatureId());
106 m_transitInfo->m_features[featureId] = {};
107 }
108
109 if (m_loadSubset && (stop.second.GetTransferId() != routing::transit::kInvalidTransferId))
110 m_transitInfo->m_transfersSubway[stop.second.GetTransferId()] = {};
111 }
112 FillItemsByIdMap(graphData.GetTransfers(), m_transitInfo->m_transfersSubway);
113 FillItemsByIdMap(graphData.GetLines(), m_transitInfo->m_linesSubway);
114 FillItemsByIdMap(graphData.GetShapes(), m_transitInfo->m_shapesSubway);
115 }
116 else if (transitHeaderVersion == ::transit::TransitVersion::AllPublicTransport)
117 {
118 m_transitInfo->m_transitVersion = ::transit::TransitVersion::AllPublicTransport;
119
120 ::transit::experimental::TransitData transitData;
121 transitData.DeserializeForRendering(*reader.GetPtr());
122
123 FillItemsByIdMap(transitData.GetStops(), m_transitInfo->m_stopsPT);
124
125 for (auto const & edge : transitData.GetEdges())
126 {

Callers

nothing calls this directly

Calls 15

GetVersionFunction · 0.85
GetCenterFunction · 0.85
IsExistMethod · 0.80
GetStop1IdMethod · 0.80
GetStop2IdMethod · 0.80
GetLineIdMethod · 0.80
GetTranslatedNameMethod · 0.80
has_valueMethod · 0.80
FeatureIDClass · 0.50
GetMwmHandleByIdMethod · 0.45
IsAliveMethod · 0.45
GetValueMethod · 0.45

Tested by

no test coverage detected