Skip to content

Commit 32c5f14

Browse files
committed
Makes the OSRM interface threadsafe.
Technically speaking we're changing the `libosrm` API. But since we're only lifting restrictions by marking the API threadsafe, we should be fine here.
1 parent cbd88c6 commit 32c5f14

File tree

5 files changed

+27
-27
lines changed

5 files changed

+27
-27
lines changed

example/example.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ int main(int argc, const char *argv[])
3434
config.use_shared_memory = false;
3535

3636
// Routing machine with several services (such as Route, Table, Nearest, Trip, Match)
37-
OSRM osrm{config};
37+
const OSRM osrm{config};
3838

3939
// The following shows how to use the Route service; configure this service
4040
RouteParameters params;

include/engine/engine.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,20 +55,20 @@ class Engine final
5555
// Needs to be public
5656
struct EngineLock;
5757

58-
explicit Engine(EngineConfig &config);
58+
explicit Engine(const EngineConfig &config);
5959

6060
Engine(Engine &&) noexcept;
6161
Engine &operator=(Engine &&) noexcept;
6262

6363
// Impl. in cpp since for unique_ptr of incomplete types
6464
~Engine();
6565

66-
Status Route(const api::RouteParameters &parameters, util::json::Object &result);
67-
Status Table(const api::TableParameters &parameters, util::json::Object &result);
68-
Status Nearest(const api::NearestParameters &parameters, util::json::Object &result);
69-
Status Trip(const api::TripParameters &parameters, util::json::Object &result);
70-
Status Match(const api::MatchParameters &parameters, util::json::Object &result);
71-
Status Tile(const api::TileParameters &parameters, std::string &result);
66+
Status Route(const api::RouteParameters &parameters, util::json::Object &result) const;
67+
Status Table(const api::TableParameters &parameters, util::json::Object &result) const;
68+
Status Nearest(const api::NearestParameters &parameters, util::json::Object &result) const;
69+
Status Trip(const api::TripParameters &parameters, util::json::Object &result) const;
70+
Status Match(const api::MatchParameters &parameters, util::json::Object &result) const;
71+
Status Tile(const api::TileParameters &parameters, std::string &result) const;
7272

7373
private:
7474
std::unique_ptr<EngineLock> lock;

include/osrm/osrm.hpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class OSRM final
8383
* \return Status indicating success for the query or failure
8484
* \see Status, RouteParameters and json::Object
8585
*/
86-
Status Route(const RouteParameters &parameters, json::Object &result);
86+
Status Route(const RouteParameters &parameters, json::Object &result) const;
8787

8888
/**
8989
* Distance tables for coordinates.
@@ -92,7 +92,7 @@ class OSRM final
9292
* \return Status indicating success for the query or failure
9393
* \see Status, TableParameters and json::Object
9494
*/
95-
Status Table(const TableParameters &parameters, json::Object &result);
95+
Status Table(const TableParameters &parameters, json::Object &result) const;
9696

9797
/**
9898
* Nearest street segment for coordinate.
@@ -101,7 +101,7 @@ class OSRM final
101101
* \return Status indicating success for the query or failure
102102
* \see Status, NearestParameters and json::Object
103103
*/
104-
Status Nearest(const NearestParameters &parameters, json::Object &result);
104+
Status Nearest(const NearestParameters &parameters, json::Object &result) const;
105105

106106
/**
107107
* Trip: shortest round trip between coordinates.
@@ -110,7 +110,7 @@ class OSRM final
110110
* \return Status indicating success for the query or failure
111111
* \see Status, TripParameters and json::Object
112112
*/
113-
Status Trip(const TripParameters &parameters, json::Object &result);
113+
Status Trip(const TripParameters &parameters, json::Object &result) const;
114114

115115
/**
116116
* Match: snaps noisy coordinate traces to the road network
@@ -119,7 +119,7 @@ class OSRM final
119119
* \return Status indicating success for the query or failure
120120
* \see Status, MatchParameters and json::Object
121121
*/
122-
Status Match(const MatchParameters &parameters, json::Object &result);
122+
Status Match(const MatchParameters &parameters, json::Object &result) const;
123123

124124
/**
125125
* Tile: vector tiles with internal graph representation
@@ -128,7 +128,7 @@ class OSRM final
128128
* \return Status indicating success for the query or failure
129129
* \see Status, TileParameters and json::Object
130130
*/
131-
Status Tile(const TileParameters &parameters, std::string &result);
131+
Status Tile(const TileParameters &parameters, std::string &result) const;
132132

133133
private:
134134
std::unique_ptr<engine::Engine> engine_;

src/engine/engine.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ namespace osrm
124124
namespace engine
125125
{
126126

127-
Engine::Engine(EngineConfig &config)
127+
Engine::Engine(const EngineConfig &config)
128128
{
129129
if (config.use_shared_memory)
130130
{
@@ -157,32 +157,32 @@ Engine::~Engine() = default;
157157
Engine::Engine(Engine &&) noexcept = default;
158158
Engine &Engine::operator=(Engine &&) noexcept = default;
159159

160-
Status Engine::Route(const api::RouteParameters &params, util::json::Object &result)
160+
Status Engine::Route(const api::RouteParameters &params, util::json::Object &result) const
161161
{
162162
return RunQuery(lock, *query_data_facade, params, *route_plugin, result);
163163
}
164164

165-
Status Engine::Table(const api::TableParameters &params, util::json::Object &result)
165+
Status Engine::Table(const api::TableParameters &params, util::json::Object &result) const
166166
{
167167
return RunQuery(lock, *query_data_facade, params, *table_plugin, result);
168168
}
169169

170-
Status Engine::Nearest(const api::NearestParameters &params, util::json::Object &result)
170+
Status Engine::Nearest(const api::NearestParameters &params, util::json::Object &result) const
171171
{
172172
return RunQuery(lock, *query_data_facade, params, *nearest_plugin, result);
173173
}
174174

175-
Status Engine::Trip(const api::TripParameters &params, util::json::Object &result)
175+
Status Engine::Trip(const api::TripParameters &params, util::json::Object &result) const
176176
{
177177
return RunQuery(lock, *query_data_facade, params, *trip_plugin, result);
178178
}
179179

180-
Status Engine::Match(const api::MatchParameters &params, util::json::Object &result)
180+
Status Engine::Match(const api::MatchParameters &params, util::json::Object &result) const
181181
{
182182
return RunQuery(lock, *query_data_facade, params, *match_plugin, result);
183183
}
184184

185-
Status Engine::Tile(const api::TileParameters &params, std::string &result)
185+
Status Engine::Tile(const api::TileParameters &params, std::string &result) const
186186
{
187187
return RunQuery(lock, *query_data_facade, params, *tile_plugin, result);
188188
}

src/osrm/osrm.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,32 +21,32 @@ OSRM &OSRM::operator=(OSRM &&) noexcept = default;
2121

2222
// Forward to implementation
2323

24-
engine::Status OSRM::Route(const engine::api::RouteParameters &params, util::json::Object &result)
24+
engine::Status OSRM::Route(const engine::api::RouteParameters &params, util::json::Object &result) const
2525
{
2626
return engine_->Route(params, result);
2727
}
2828

29-
engine::Status OSRM::Table(const engine::api::TableParameters &params, json::Object &result)
29+
engine::Status OSRM::Table(const engine::api::TableParameters &params, json::Object &result) const
3030
{
3131
return engine_->Table(params, result);
3232
}
3333

34-
engine::Status OSRM::Nearest(const engine::api::NearestParameters &params, json::Object &result)
34+
engine::Status OSRM::Nearest(const engine::api::NearestParameters &params, json::Object &result) const
3535
{
3636
return engine_->Nearest(params, result);
3737
}
3838

39-
engine::Status OSRM::Trip(const engine::api::TripParameters &params, json::Object &result)
39+
engine::Status OSRM::Trip(const engine::api::TripParameters &params, json::Object &result) const
4040
{
4141
return engine_->Trip(params, result);
4242
}
4343

44-
engine::Status OSRM::Match(const engine::api::MatchParameters &params, json::Object &result)
44+
engine::Status OSRM::Match(const engine::api::MatchParameters &params, json::Object &result) const
4545
{
4646
return engine_->Match(params, result);
4747
}
4848

49-
engine::Status OSRM::Tile(const engine::api::TileParameters &params, std::string &result)
49+
engine::Status OSRM::Tile(const engine::api::TileParameters &params, std::string &result) const
5050
{
5151
return engine_->Tile(params, result);
5252
}

0 commit comments

Comments
 (0)