Merge branch 'master' into sf-pool-alloc

This commit is contained in:
Siarhei Fedartsou
2024-07-28 21:05:31 +02:00
15 changed files with 285 additions and 13 deletions
@@ -0,0 +1,20 @@
include "route.fbs";
include "table.fbs";
namespace osrm.engine.api.fbresult;
table Error {
code: string;
message: string;
}
table FBResult {
error: bool = false;
code: Error;
data_version: string;
waypoints: [Waypoint]; //Used as 'sources' waypoints for a 'Table' service
routes: [RouteObject];
table: TableResult;
}
root_type FBResult;
@@ -0,0 +1,6 @@
namespace osrm.engine.api.fbresult;
struct Position {
longitude: float;
latitude: float;
}
+110
View File
@@ -0,0 +1,110 @@
include "waypoint.fbs";
namespace osrm.engine.api.fbresult;
table Metadata {
datasource_names: [string];
}
table Annotation {
distance: [uint];
duration: [uint];
datasources: [uint];
nodes: [uint];
weight: [uint];
speed: [float];
metadata: Metadata;
}
enum ManeuverType: byte {
Turn,
NewName,
Depart,
Arrive,
Merge,
OnRamp,
OffRamp,
Fork,
EndOfRoad,
Continue,
Roundabout,
Rotary,
RoundaboutTurn,
Notification,
ExitRoundabout,
ExitRotary
}
enum Turn: byte {
None,
UTurn,
SharpRight,
Right,
SlightRight,
Straight,
SlightLeft,
Left,
SharpLeft
}
table StepManeuver {
location: Position;
bearing_before: ushort;
bearing_after: ushort;
type: ManeuverType;
modifier: Turn;
exit: ubyte;
}
table Lane {
indications: [Turn];
valid: bool;
}
table Intersection {
location: Position;
bearings: [short];
classes: [string];
entry: [bool];
in_bearing: uint;
out_bearing: uint;
lanes: [Lane];
}
table Step {
distance: float;
duration: float;
polyline: string;
coordinates: [Position];
weight: float;
name: string;
ref: string;
pronunciation: string;
destinations: string;
exits: string;
mode: string;
maneuver: StepManeuver;
intersections: [Intersection];
rotary_name: string;
rotary_pronunciation: string;
driving_side: bool; //Where true stands for the left side.
}
table Leg {
distance: double;
duration: double;
weight: double;
summary: string;
annotations: Annotation;
steps: [Step];
}
table RouteObject {
distance: float;
duration: float;
weight: float;
weight_name: string;
confidence: float; //Used only by 'Match' service
polyline: string;
coordinates: [Position];
legs: [Leg];
}
+11
View File
@@ -0,0 +1,11 @@
include "waypoint.fbs";
namespace osrm.engine.api.fbresult;
table TableResult {
durations: [float];
rows: ushort;
cols: ushort;
distances: [float];
destinations: [Waypoint];
fallback_speed_cells: [uint];
}
@@ -0,0 +1,19 @@
include "position.fbs";
namespace osrm.engine.api.fbresult;
struct Uint64Pair {
first: uint64;
second: uint64;
}
table Waypoint {
hint: string;
distance: float;
name: string;
location: Position;
nodes: Uint64Pair; //Used only by 'Nearest' service
matchings_index: uint; //Used only by 'Match' service
waypoint_index: uint; //Used by 'Match' and 'Trip' services
alternatives_count: uint; //Used only by 'Match' service
trips_index: uint; //Used only by 'Trip' service
}
+14 -4
View File
@@ -2,6 +2,7 @@
#define MEMINFO_HPP
#include "util/log.hpp"
#include <cstddef>
#ifndef _WIN32
#include <sys/resource.h>
@@ -10,22 +11,31 @@
namespace osrm::util
{
inline void DumpMemoryStats()
inline size_t PeakRAMUsedInBytes()
{
#ifndef _WIN32
rusage usage;
getrusage(RUSAGE_SELF, &usage);
#ifdef __linux__
// Under linux, ru.maxrss is in kb
util::Log() << "RAM: peak bytes used: " << usage.ru_maxrss * 1024;
return usage.ru_maxrss * 1024;
#else // __linux__
// Under BSD systems (OSX), it's in bytes
util::Log() << "RAM: peak bytes used: " << usage.ru_maxrss;
return usage.ru_maxrss;
#endif // __linux__
#else // _WIN32
return 0;
#endif // _WIN32
}
inline void DumpMemoryStats()
{
#ifndef _WIN32
util::Log() << "RAM: peak bytes used: " << PeakRAMUsedInBytes();
#else // _WIN32
util::Log() << "RAM: peak bytes used: <not implemented on Windows>";
#endif // _WIN32
}
} // namespace osrm::util
#endif
#endif