summaryrefslogtreecommitdiffstats
path: root/server/src/api.cpp
diff options
context:
space:
mode:
authorRutger Broekhoff2026-08-28 22:22:24 +0200
committerRutger Broekhoff2026-08-28 22:22:24 +0200
commitb0d7600970d2fdb1eb6fff813c7336ea34d4e228 (patch)
tree051d6f80c7e332f4b31027025ae7c60c7ac70742 /server/src/api.cpp
parent70643a9e4821bd11c3f363f1708fe420965467d1 (diff)
downloadroutemon-b0d7600970d2fdb1eb6fff813c7336ea34d4e228.tar.gz
routemon-b0d7600970d2fdb1eb6fff813c7336ea34d4e228.zip
Indent tweaks
Diffstat (limited to 'server/src/api.cpp')
-rw-r--r--server/src/api.cpp126
1 files changed, 66 insertions, 60 deletions
diff --git a/server/src/api.cpp b/server/src/api.cpp
index 73dee32..9317f1b 100644
--- a/server/src/api.cpp
+++ b/server/src/api.cpp
@@ -39,7 +39,7 @@ auto json_value_from_linestring(geo::linestring const& ls) -> json::value
39} 39}
40 40
41auto json_value_from_linestrings(std::vector<geo::linestring> const& lss) 41auto json_value_from_linestrings(std::vector<geo::linestring> const& lss)
42 -> json::value 42 -> json::value
43{ 43{
44 json::array a; 44 json::array a;
45 for (auto const& ls : lss) 45 for (auto const& ls : lss)
@@ -48,8 +48,8 @@ auto json_value_from_linestrings(std::vector<geo::linestring> const& lss)
48} 48}
49 49
50auto tag_invoke( 50auto tag_invoke(
51 json::value_from_tag, json::value& jv, relevant_road_closure const& clo) 51 json::value_from_tag, json::value& jv, relevant_road_closure const& clo)
52 -> void 52 -> void
53{ 53{
54 jv = json::object{ 54 jv = json::object{
55 {"relevant_lss", json_value_from_linestrings(clo.relevant_lss)}, 55 {"relevant_lss", json_value_from_linestrings(clo.relevant_lss)},
@@ -57,7 +57,8 @@ auto tag_invoke(
57} 57}
58 58
59auto tag_invoke( 59auto tag_invoke(
60 json::value_from_tag, json::value& jv, relevant_situation const& sit) -> void 60 json::value_from_tag, json::value& jv, relevant_situation const& sit)
61 -> void
61{ 62{
62 jv = json::object{ 63 jv = json::object{
63 {"id", json::value_from(sit.id)}, 64 {"id", json::value_from(sit.id)},
@@ -68,7 +69,7 @@ auto tag_invoke(
68} 69}
69 70
70auto tag_invoke(json::value_from_tag, json::value& jv, track_segment const& seg) 71auto tag_invoke(json::value_from_tag, json::value& jv, track_segment const& seg)
71 -> void 72 -> void
72{ 73{
73 jv = json::object{ 74 jv = json::object{
74 {"points", json_value_from_linestring(seg.points)}, 75 {"points", json_value_from_linestring(seg.points)},
@@ -76,7 +77,7 @@ auto tag_invoke(json::value_from_tag, json::value& jv, track_segment const& seg)
76} 77}
77 78
78auto tag_invoke(json::value_from_tag, json::value& jv, track const& track) 79auto tag_invoke(json::value_from_tag, json::value& jv, track const& track)
79 -> void 80 -> void
80{ 81{
81 jv = json::object{ 82 jv = json::object{
82 {"segments", json::value_from(track.segments)}, 83 {"segments", json::value_from(track.segments)},
@@ -84,7 +85,8 @@ auto tag_invoke(json::value_from_tag, json::value& jv, track const& track)
84} 85}
85 86
86auto tag_invoke( 87auto tag_invoke(
87 json::value_from_tag, json::value& jv, process_gpx_result const& res) -> void 88 json::value_from_tag, json::value& jv, process_gpx_result const& res)
89 -> void
88{ 90{
89 jv = json::object{ 91 jv = json::object{
90 {"tracks", json::value_from(res.tracks)}, 92 {"tracks", json::value_from(res.tracks)},
@@ -93,7 +95,7 @@ auto tag_invoke(
93} 95}
94 96
95auto tag_invoke(json::value_from_tag, json::value& jv, sysinfo const& info) 97auto tag_invoke(json::value_from_tag, json::value& jv, sysinfo const& info)
96 -> void 98 -> void
97{ 99{
98 jv = json::object{ 100 jv = json::object{
99 {"using_publication_of", 101 {"using_publication_of",
@@ -124,14 +126,14 @@ handler::handler(log::logger const& l, datex2::situation_publication pub)
124 } 126 }
125 auto const after_build = chrono::steady_clock::now(); 127 auto const after_build = chrono::steady_clock::now();
126 auto const dur_build = 128 auto const dur_build =
127 chrono::duration_cast<chrono::milliseconds>(after_build - before_build); 129 chrono::duration_cast<chrono::milliseconds>(after_build - before_build);
128 l_.info("Indices built in {}", dur_build); 130 l_.info("Indices built in {}", dur_build);
129 l_.info("LSE index size: {}", lse_index_.size()); 131 l_.info("LSE index size: {}", lse_index_.size());
130 l_.info("Point index size: {}", p_index_.size()); 132 l_.info("Point index size: {}", p_index_.size());
131} 133}
132 134
133auto handler::process_gpx(gpx::file&& gpx_file) 135auto handler::process_gpx(gpx::file&& gpx_file)
134 -> std::optional<process_gpx_result> 136 -> std::optional<process_gpx_result>
135{ 137{
136 auto const now = chrono::utc_clock::now(); 138 auto const now = chrono::utc_clock::now();
137 auto const relevant = std::initializer_list<time::period>{ 139 auto const relevant = std::initializer_list<time::period>{
@@ -143,14 +145,14 @@ auto handler::process_gpx(gpx::file&& gpx_file)
143 for (auto const& track : gpx_file.tracks) 145 for (auto const& track : gpx_file.tracks)
144 for (auto const& seg : track.segments) 146 for (auto const& seg : track.segments)
145 geo::split_linestring_with_overlap_segments( 147 geo::split_linestring_with_overlap_segments(
146 seg.waypoints, 148 seg.waypoints,
147 5000 /* meters max total dist until a new split is forced */, 149 5000 /* meters max total dist until a new split is forced */,
148 splits_with_overlap_segments); 150 splits_with_overlap_segments);
149 auto const before_query = chrono::steady_clock::now(); 151 auto const before_query = chrono::steady_clock::now();
150 152
151 l_.debug("Querying for relevant situations"); 153 l_.debug("Querying for relevant situations");
152 auto relevant_road_closures = 154 auto relevant_road_closures =
153 std::unordered_set<std::shared_ptr<datex2::road_closure>>{}; 155 std::unordered_set<std::shared_ptr<datex2::road_closure>>{};
154 auto ls_checked = 0uz; 156 auto ls_checked = 0uz;
155 auto p_checked = 0uz; 157 auto p_checked = 0uz;
156 auto i = 0; 158 auto i = 0;
@@ -197,66 +199,70 @@ auto handler::process_gpx(gpx::file&& gpx_file)
197 199
198 auto const after_query = chrono::steady_clock::now(); 200 auto const after_query = chrono::steady_clock::now();
199 l_.debug( 201 l_.debug(
200 "Done (checked {} line string(s) and {} point(s)) in {}", ls_checked, 202 "Done (checked {} line string(s) and {} point(s)) in {}", ls_checked,
201 p_checked, 203 p_checked,
202 chrono::duration_cast<chrono::milliseconds>(after_query - before_query)); 204 chrono::duration_cast<chrono::milliseconds>(after_query - before_query));
203 205
204 auto relevant_situations = 206 auto relevant_situations =
205 std::unordered_set<std::shared_ptr<datex2::situation>>{}; 207 std::unordered_set<std::shared_ptr<datex2::situation>>{};
206 for (auto const& rc : relevant_road_closures) 208 for (auto const& rc : relevant_road_closures)
207 relevant_situations.emplace(rc->parent); 209 relevant_situations.emplace(rc->parent);
208 210
209 l_.debug( 211 l_.debug(
210 "Identified {} relevant road closure(s), part of {} unique " 212 "Identified {} relevant road closure(s), part of {} unique "
211 "situation(s)", 213 "situation(s)",
212 relevant_road_closures.size(), relevant_situations.size()); 214 relevant_road_closures.size(), relevant_situations.size());
213 for (auto const& sit : relevant_situations) 215 for (auto const& sit : relevant_situations)
214 l_.debug("Relevant situation: {}", sit->id); 216 l_.debug("Relevant situation: {}", sit->id);
215 217
216 return process_gpx_result{ 218 return process_gpx_result{
217 .tracks = gpx_file.tracks 219 .tracks = gpx_file.tracks
218 | views::transform( 220 | views::transform(
219 [](auto const& trk) -> track 221 [](auto const& trk) -> track
220 { 222 {
221 return { 223 return {
222 .segments = trk.segments 224 .segments =
223 | views::transform( 225 trk.segments
224 [](auto const& seg) -> track_segment 226 | views::transform(
225 { return {.points = seg.waypoints}; }) 227 [](auto const& seg) -> track_segment
226 | std::ranges::to<std::vector<track_segment>>(), 228 { return {.points = seg.waypoints}; })
227 }; 229 | std::ranges::to<std::vector<track_segment>>(),
228 }) 230 };
231 })
229 | std::ranges::to<std::vector<track>>(), 232 | std::ranges::to<std::vector<track>>(),
230 .relevant_situations = 233 .relevant_situations =
231 relevant_situations 234 relevant_situations
232 | views::transform( 235 | views::transform(
233 [&](std::shared_ptr<datex2::situation> sit) -> relevant_situation 236 [&](std::shared_ptr<datex2::situation> sit) -> relevant_situation
234 { 237 {
235 return { 238 return {
236 .id = sit->id, 239 .id = sit->id,
237 .location = sit->location, 240 .location = sit->location,
238 .comments = sit->comments, 241 .comments = sit->comments,
239 .relevant_road_closures = 242 .relevant_road_closures =
240 relevant_road_closures 243 relevant_road_closures
241 | views::filter( 244 | views::filter(
242 [&](std::shared_ptr<datex2::road_closure> const& rc) -> bool 245 [&](std::shared_ptr<datex2::road_closure> const& rc)
243 { return std::shared_ptr{rc->parent} == sit; }) 246 -> bool
244 | views::transform( 247 { return std::shared_ptr{rc->parent} == sit; })
245 [](std::shared_ptr<datex2::road_closure> const& rc) 248 | views::transform(
246 -> relevant_road_closure 249 [](std::shared_ptr<datex2::road_closure> const& rc)
247 { 250 -> relevant_road_closure
248 return { 251 {
249 .relevant_lss = 252 return {
250 rc->relevant_line_strings 253 .relevant_lss =
251 | views::transform( 254 rc->relevant_line_strings
252 [](auto const& lsp) -> geo::linestring { return *lsp; }) 255 | views::transform(
253 | std::ranges::to<std::vector<geo::linestring>>(), 256 [](auto const& lsp) -> geo::linestring
254 }; 257 { return *lsp; })
255 }) 258 | std::ranges::to<
256 | std::ranges::to<std::vector<relevant_road_closure>>(), 259 std::vector<geo::linestring>>(),
257 }; 260 };
258 }) 261 })
259 | std::ranges::to<std::vector<relevant_situation>>(), 262 | std::ranges::to<std::vector<relevant_road_closure>>(),
263 };
264 })
265 | std::ranges::to<std::vector<relevant_situation>>(),
260 }; 266 };
261} 267}
262 268