summaryrefslogtreecommitdiffstats
path: root/server/src/api.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/api.cpp')
-rw-r--r--server/src/api.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/server/src/api.cpp b/server/src/api.cpp
index 41c49c8..f1ca24e 100644
--- a/server/src/api.cpp
+++ b/server/src/api.cpp
@@ -144,9 +144,11 @@ handler::handler(log::logger const& l, datex2::situation_publication pub)
144 l_.info("Point index size: {}", bpe_index_.size()); 144 l_.info("Point index size: {}", bpe_index_.size());
145} 145}
146 146
147auto handler::process_gpx(gpx::file&& gpx_file) 147auto handler::process_gpx(trace::id trace_id, gpx::file&& gpx_file)
148 -> std::optional<process_gpx_result> 148 -> std::optional<process_gpx_result>
149{ 149{
150 auto l = l_.with("trace_id", trace_id.as_string());
151
150 auto const now = chrono::utc_clock::now(); 152 auto const now = chrono::utc_clock::now();
151 auto const relevant = std::initializer_list<time::period>{ 153 auto const relevant = std::initializer_list<time::period>{
152 time::period{now - chrono::days(7), now + chrono::days(7)} 154 time::period{now - chrono::days(7), now + chrono::days(7)}
@@ -162,7 +164,7 @@ auto handler::process_gpx(gpx::file&& gpx_file)
162 164
163 auto vincenty_strategy = geo::wgs84::vincenty_strategy{}; 165 auto vincenty_strategy = geo::wgs84::vincenty_strategy{};
164 166
165 l_.debug("Querying for relevant situations"); 167 l.debug("Querying for relevant situations");
166 auto relevant_road_closures = 168 auto relevant_road_closures =
167 std::unordered_set<std::shared_ptr<datex2::road_closure>>{}; 169 std::unordered_set<std::shared_ptr<datex2::road_closure>>{};
168 auto ls_checked = 0uz; 170 auto ls_checked = 0uz;
@@ -170,7 +172,7 @@ auto handler::process_gpx(gpx::file&& gpx_file)
170 auto i = 0; 172 auto i = 0;
171 for (auto const& part : segments) 173 for (auto const& part : segments)
172 { 174 {
173 l_.debug("Checking part [{}/{}]", ++i, segments.size()); 175 l.debug("Checking part [{}/{}]", ++i, segments.size());
174 176
175 auto part_zone_lss = 177 auto part_zone_lss =
176 geo::utm::multizonal::split_linestring_across_zones(part); 178 geo::utm::multizonal::split_linestring_across_zones(part);
@@ -206,7 +208,7 @@ auto handler::process_gpx(gpx::file&& gpx_file)
206 } 208 }
207 209
208 auto const after_query = chrono::steady_clock::now(); 210 auto const after_query = chrono::steady_clock::now();
209 l_.debug( 211 l.debug(
210 "Done (checked {} line string(s) and {} point(s)) in {}", ls_checked, 212 "Done (checked {} line string(s) and {} point(s)) in {}", ls_checked,
211 p_checked, 213 p_checked,
212 chrono::duration_cast<chrono::milliseconds>(after_query - before_query)); 214 chrono::duration_cast<chrono::milliseconds>(after_query - before_query));
@@ -216,12 +218,12 @@ auto handler::process_gpx(gpx::file&& gpx_file)
216 for (auto const& rc : relevant_road_closures) 218 for (auto const& rc : relevant_road_closures)
217 relevant_situations.emplace(rc->parent); 219 relevant_situations.emplace(rc->parent);
218 220
219 l_.debug( 221 l.debug(
220 "Identified {} relevant road closure(s), part of {} unique " 222 "Identified {} relevant road closure(s), part of {} unique "
221 "situation(s)", 223 "situation(s)",
222 relevant_road_closures.size(), relevant_situations.size()); 224 relevant_road_closures.size(), relevant_situations.size());
223 for (auto const& sit : relevant_situations) 225 for (auto const& sit : relevant_situations)
224 l_.debug("Relevant situation: {}", sit->id); 226 l.debug("Relevant situation: {}", sit->id);
225 227
226 return process_gpx_result{ 228 return process_gpx_result{
227 .tracks = gpx_file.tracks 229 .tracks = gpx_file.tracks