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:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-12-03 14:14:51 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-12-05 15:02:26 +0300
commit0b43dc9d8d6164bd4bf9f8a1374d6aa428d6b788 (patch)
treed596d54dc685e83c2492dfa1f63c8a6a599443c7 /traffic
parent3f7b61e52e1bcf36987a32baf0abbb03d6671ea0 (diff)
Review fixes.
Diffstat (limited to 'traffic')
-rw-r--r--traffic/traffic.pro2
-rw-r--r--traffic/traffic_info.cpp8
-rw-r--r--traffic/traffic_info.hpp11
-rw-r--r--traffic/traffic_info_getter.cpp23
-rw-r--r--traffic/traffic_info_getter.hpp30
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