diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-12-03 14:14:51 +0300 |
---|---|---|
committer | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2016-12-05 15:02:26 +0300 |
commit | 0b43dc9d8d6164bd4bf9f8a1374d6aa428d6b788 (patch) | |
tree | d596d54dc685e83c2492dfa1f63c8a6a599443c7 /traffic | |
parent | 3f7b61e52e1bcf36987a32baf0abbb03d6671ea0 (diff) |
Review fixes.
Diffstat (limited to 'traffic')
-rw-r--r-- | traffic/traffic.pro | 2 | ||||
-rw-r--r-- | traffic/traffic_info.cpp | 8 | ||||
-rw-r--r-- | traffic/traffic_info.hpp | 11 | ||||
-rw-r--r-- | traffic/traffic_info_getter.cpp | 23 | ||||
-rw-r--r-- | traffic/traffic_info_getter.hpp | 30 |
5 files changed, 64 insertions, 10 deletions
diff --git a/traffic/traffic.pro b/traffic/traffic.pro index ecacd5f855..aaf100a6ad 100644 --- a/traffic/traffic.pro +++ b/traffic/traffic.pro @@ -9,7 +9,9 @@ include($$ROOT_DIR/common.pri) SOURCES += \ speed_groups.cpp \ traffic_info.cpp \ + traffic_info_getter.cpp \ HEADERS += \ speed_groups.hpp \ traffic_info.hpp \ + traffic_info_getter.hpp \ diff --git a/traffic/traffic_info.cpp b/traffic/traffic_info.cpp index f9e235c7a8..e422340ce7 100644 --- a/traffic/traffic_info.cpp +++ b/traffic/traffic_info.cpp @@ -84,6 +84,14 @@ TrafficInfo::TrafficInfo(TrafficInfo && info) , m_currentDataVersion(info.m_currentDataVersion) {} +// static +TrafficInfo TrafficInfo::BuildForTesting(Coloring && coloring) +{ + TrafficInfo info; + info.m_coloring = move(coloring); + return info; +} + bool TrafficInfo::ReceiveTrafficData() { auto const & info = m_mwmId.GetInfo(); diff --git a/traffic/traffic_info.hpp b/traffic/traffic_info.hpp index 1e99417dc7..c4b842161f 100644 --- a/traffic/traffic_info.hpp +++ b/traffic/traffic_info.hpp @@ -70,8 +70,7 @@ public: TrafficInfo(TrafficInfo && info); - // For testing only. - TrafficInfo(Coloring && coloring) : m_coloring(move(coloring)) {} + static TrafficInfo BuildForTesting(Coloring && coloring); // Fetches the latest traffic data from the server and updates the coloring. // Construct the url by passing an MwmId. @@ -106,12 +105,4 @@ public: virtual void OnTrafficInfoAdded(traffic::TrafficInfo && info) = 0; virtual void OnTrafficInfoRemoved(MwmSet::MwmId const & mwmId) = 0; }; - -class TrafficInfoGetter -{ -public: - virtual ~TrafficInfoGetter() = default; - - virtual shared_ptr<traffic::TrafficInfo> GetTrafficInfo(MwmSet::MwmId const & mwmId) const = 0; -}; } // namespace traffic diff --git a/traffic/traffic_info_getter.cpp b/traffic/traffic_info_getter.cpp new file mode 100644 index 0000000000..822d7690d7 --- /dev/null +++ b/traffic/traffic_info_getter.cpp @@ -0,0 +1,23 @@ +#include "traffic/traffic_info_getter.hpp" + +namespace traffic +{ +void TrafficCache::Set(TrafficInfo && info) +{ + MwmSet::MwmId const mwmId = info.GetMwmId(); + m_trafficInfo[mwmId] = make_shared<TrafficInfo>(move(info)); +} + +void TrafficCache::Remove(MwmSet::MwmId const & mwmId) { m_trafficInfo.erase(mwmId); } + +shared_ptr<TrafficInfo> TrafficCache::Get(MwmSet::MwmId const & mwmId) const +{ + auto it = m_trafficInfo.find(mwmId); + + if (it == m_trafficInfo.cend()) + return shared_ptr<TrafficInfo>(); + return it->second; +} + +void TrafficCache::Clear() { m_trafficInfo.clear(); } +} // namespace traffic diff --git a/traffic/traffic_info_getter.hpp b/traffic/traffic_info_getter.hpp new file mode 100644 index 0000000000..34933bd900 --- /dev/null +++ b/traffic/traffic_info_getter.hpp @@ -0,0 +1,30 @@ +#pragma once +#include "traffic/traffic_info.hpp" + +#include "indexer/mwm_set.hpp" + +#include "std/map.hpp" +#include "std/shared_ptr.hpp" + +namespace traffic +{ +class TrafficInfoGetter +{ +public: + virtual ~TrafficInfoGetter() = default; + + virtual shared_ptr<traffic::TrafficInfo> GetTrafficInfo(MwmSet::MwmId const & mwmId) const = 0; +}; + +class TrafficCache final +{ +public: + void Set(traffic::TrafficInfo && info); + void Remove(MwmSet::MwmId const & mwmId); + shared_ptr<traffic::TrafficInfo> Get(MwmSet::MwmId const & mwmId) const; + void Clear(); + +private: + map<MwmSet::MwmId, shared_ptr<traffic::TrafficInfo>> m_trafficInfo; +}; +} // namespace traffic |