From fd74ef61df978175ae84602b61bb62a8a987ab9f Mon Sep 17 00:00:00 2001 From: Vladimir Byko-Ianko Date: Fri, 2 Dec 2016 06:57:57 +0300 Subject: [PATCH] Using move semantics for passing traffic jam info to routing. --- map/traffic_manager.cpp | 6 +++--- map/traffic_manager.hpp | 2 +- routing/routing_session.cpp | 6 ++---- routing/routing_session.hpp | 2 +- traffic/traffic_info.hpp | 4 +++- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/map/traffic_manager.cpp b/map/traffic_manager.cpp index ff5b1fc800..5b3353166b 100644 --- a/map/traffic_manager.cpp +++ b/map/traffic_manager.cpp @@ -187,7 +187,7 @@ void TrafficManager::ThreadRoutine() if (info.ReceiveTrafficData()) { - OnTrafficDataResponse(info); + OnTrafficDataResponse(move(info)); } else { @@ -304,7 +304,7 @@ void TrafficManager::OnTrafficRequestFailed(traffic::TrafficInfo const & info) UpdateState(); } -void TrafficManager::OnTrafficDataResponse(traffic::TrafficInfo const & info) +void TrafficManager::OnTrafficDataResponse(traffic::TrafficInfo && info) { lock_guard lock(m_mutex); @@ -335,7 +335,7 @@ void TrafficManager::OnTrafficDataResponse(traffic::TrafficInfo const & info) UpdateState(); // Update traffic colors for routing. - m_observer.OnTrafficInfoAdded(info); + m_observer.OnTrafficInfoAdded(move(info)); } void TrafficManager::CheckCacheSize() diff --git a/map/traffic_manager.hpp b/map/traffic_manager.hpp index 303aba6140..c1c61bba4e 100644 --- a/map/traffic_manager.hpp +++ b/map/traffic_manager.hpp @@ -77,7 +77,7 @@ private: void ThreadRoutine(); bool WaitForRequest(vector & mwms); - void OnTrafficDataResponse(traffic::TrafficInfo const & info); + void OnTrafficDataResponse(traffic::TrafficInfo && info); void OnTrafficRequestFailed(traffic::TrafficInfo const & info); private: diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index c62f4defde..c1afbf63ef 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -588,13 +588,11 @@ void RoutingSession::OnTrafficEnabled(bool enable) m_trafficInfo.clear(); } -void RoutingSession::OnTrafficInfoAdded(TrafficInfo const & info) +void RoutingSession::OnTrafficInfoAdded(TrafficInfo && info) { threads::MutexGuard guard(m_routingSessionMutex); UNUSED_VALUE(guard); - // @TODO(bykoianko) It's worth considering moving a big |info.GetColoring()| - // not copying as it's done now. - m_trafficInfo.insert(make_pair(info.GetMwmId(), make_shared(info))); + m_trafficInfo.insert(make_pair(info.GetMwmId(), make_shared(move(info)))); } void RoutingSession::OnTrafficInfoRemoved(MwmSet::MwmId const & mwmId) diff --git a/routing/routing_session.hpp b/routing/routing_session.hpp index 94ae541cee..6f581a2538 100644 --- a/routing/routing_session.hpp +++ b/routing/routing_session.hpp @@ -155,7 +155,7 @@ public: // RoutingObserver overrides: void OnTrafficEnabled(bool enable) override; - void OnTrafficInfoAdded(traffic::TrafficInfo const & info) override; + void OnTrafficInfoAdded(traffic::TrafficInfo && info) override; void OnTrafficInfoRemoved(MwmSet::MwmId const & mwmId) override; // TrafficInfoGetter overrides: diff --git a/traffic/traffic_info.hpp b/traffic/traffic_info.hpp index af257c17f9..acf35efa3e 100644 --- a/traffic/traffic_info.hpp +++ b/traffic/traffic_info.hpp @@ -68,6 +68,8 @@ public: TrafficInfo(MwmSet::MwmId const & mwmId, int64_t currentDataVersion); + TrafficInfo(TrafficInfo && info) : m_coloring(move(info.m_coloring)), m_mwmId(info.m_mwmId) {} + void SetColoringForTesting(Coloring & coloring) { m_coloring = coloring; } // Fetches the latest traffic data from the server and updates the coloring. // Construct the url by passing an MwmId. @@ -99,7 +101,7 @@ public: virtual ~TrafficObserver() = default; virtual void OnTrafficEnabled(bool enable) = 0; - virtual void OnTrafficInfoAdded(traffic::TrafficInfo const & info) = 0; + virtual void OnTrafficInfoAdded(traffic::TrafficInfo && info) = 0; virtual void OnTrafficInfoRemoved(MwmSet::MwmId const & mwmId) = 0; };