Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Gorbushin <m.gorbushin@corp.mail.ru>2019-09-24 11:57:28 +0300
committerVladimir Byko-Ianko <bykoianko@gmail.com>2019-09-24 16:50:52 +0300
commit33cee65f2ded99c6067380c2dbfbb16c6ac20491 (patch)
tree28b4229643ae34fd7786760e98a87b4404d6b160 /routing
parentde4e7a224fd6c04cee4eee48071a96b583c8b507 (diff)
[routing] Make DataSources queue waitable for resources
Diffstat (limited to 'routing')
-rw-r--r--routing/routes_builder/routes_builder.cpp13
-rw-r--r--routing/routes_builder/routes_builder.hpp2
2 files changed, 6 insertions, 9 deletions
diff --git a/routing/routes_builder/routes_builder.cpp b/routing/routes_builder/routes_builder.cpp
index 8512d20c1f..798a8b1d3a 100644
--- a/routing/routes_builder/routes_builder.cpp
+++ b/routing/routes_builder/routes_builder.cpp
@@ -14,8 +14,10 @@
#include "base/assert.hpp"
#include "base/logging.hpp"
+#include "base/scope_guard.hpp"
#include <limits>
+#include <utility>
namespace
{
@@ -247,12 +249,6 @@ RoutesBuilder::Processor::Processor(Processor && rhs) noexcept
m_dataSource = std::move(rhs.m_dataSource);
}
-RoutesBuilder::Processor::~Processor()
-{
- if (m_dataSource)
- m_dataSourceStorage.PushDataSource(std::move(m_dataSource));
-}
-
void RoutesBuilder::Processor::InitRouter(VehicleType type)
{
if (m_router && m_router->GetVehicleType() == type)
@@ -288,6 +284,9 @@ RoutesBuilder::Result
RoutesBuilder::Processor::operator()(Params const & params)
{
InitRouter(params.m_type);
+ SCOPE_GUARD(returnDataSource, [&]() {
+ m_dataSourceStorage.PushDataSource(std::move(m_dataSource));
+ });
RouterResultCode resultCode;
routing::Route route("" /* router */, 0 /* routeId */);
@@ -299,7 +298,7 @@ RoutesBuilder::Processor::operator()(Params const & params)
false /* adjustToPrevRoute */,
*m_delegate,
route);
-
+
Result result;
result.m_params.m_checkpoints = params.m_checkpoints;
result.m_code = resultCode;
diff --git a/routing/routes_builder/routes_builder.hpp b/routing/routes_builder/routes_builder.hpp
index 05503e8801..fe63464f4c 100644
--- a/routing/routes_builder/routes_builder.hpp
+++ b/routing/routes_builder/routes_builder.hpp
@@ -107,8 +107,6 @@ private:
Processor(Processor && rhs) noexcept;
- ~Processor();
-
Result operator()(Params const & params);
private: